diff --git a/Library/Homebrew/service.rb b/Library/Homebrew/service.rb
index a386bed35e..a7dd6625c2 100644
--- a/Library/Homebrew/service.rb
+++ b/Library/Homebrew/service.rb
@@ -383,7 +383,7 @@ module Homebrew
sig { returns(T.nilable(T::Array[String])) }
def command
- @run&.map(&:to_s)
+ @run&.map(&:to_s)&.map { |arg| arg.start_with?("~") ? File.expand_path(arg) : arg }
end
sig { returns(T::Boolean) }
diff --git a/Library/Homebrew/test/service_spec.rb b/Library/Homebrew/test/service_spec.rb
index d36c42b9cb..324a373086 100644
--- a/Library/Homebrew/test/service_spec.rb
+++ b/Library/Homebrew/test/service_spec.rb
@@ -591,7 +591,7 @@ describe Homebrew::Service do
it "expands paths" do
f = stub_formula do
service do
- run opt_bin/"beanstalkd"
+ run [opt_sbin/"sleepwatcher", "-V", "-s", "~/.sleep", "-w", "~/.wakeup"]
working_dir "~"
end
end
@@ -614,7 +614,12 @@ describe Homebrew::Service do
\t
\tProgramArguments
\t
- \t\t#{HOMEBREW_PREFIX}/opt/formula_name/bin/beanstalkd
+ \t\t#{HOMEBREW_PREFIX}/opt/formula_name/sbin/sleepwatcher
+ \t\t-V
+ \t\t-s
+ \t\t#{Dir.home}/.sleep
+ \t\t-w
+ \t\t#{Dir.home}/.wakeup
\t
\tRunAtLoad
\t