在Mac OS上运行脚本时出错但在ssh后运行正常
问题描述:
我在Mac OS机器上有一个.sh脚本来使用PhoneGap生成IPA文件。如果我通过ssh登录计算机,然后运行脚本,它会成功运行。但是,如果我尝试远程执行它,做一个ssh和调用脚本如下:在Mac OS上运行脚本时出错但在ssh后运行正常
~$ ssh -i ~/.ssh/mykey [email protected]_ADDRESS 'cd /Users/admin/scripts && ./build.sh'
然后我得到这个错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- xcodeproj (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from generate_scheme.rb:2:in `<main>'
我有这样的.SH的开始文件:
#!/bin/bash
PATH=$PATH:/bin:/usr/bin:Users/admin/.rvm/gems/ruby-2.2.4/bin:/Users/admin/.rvm/gems/[email protected]/bin:/Users/admin/.rvm/rubies/ruby-2.2.4/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/admin/.rvm/bin:/Users/admin/.rvm/rubies/ruby-2.2.4/bin/xcodeproj:/Users/admin/.rvm/rubies/ruby-2.2.4/bin/ruby
export PATH
这是发生故障的线路:
ruby generate_scheme.rb
任何帮助表示赞赏,谢谢。
答
默认情况下,ssh会建立一个非登录shell,因此不会为该用户提供任何环境设置。具体而言,在您的系统上,它不会为xcodeproj
提取设置。
使用bash --login
建立一个登录shell:
ssh -i ~/.ssh/mykey [email protected]_ADDRESS -t 'bash --login -c "cd /Users/admin/scripts;./build.sh"'
+0
它的工作!谢谢! – June
是否脚本依赖于任何环境变量?这些环境变量在哪里设置? – Kenster