在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 

任何帮助表示赞赏,谢谢。

+0

是否脚本依赖于任何环境变量?这些环境变量在哪里设置? – Kenster

默认情况下,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