在Mac OS上运行脚本时出错,但在ssh后运行正常

时间:2016-07-28 11:57:59

标签: ruby macos cordova ssh

我在Mac OS机器上有一个.sh脚本,用于使用PhoneGap生成IPA文件。如果我通过ssh登录计算机,然后运行该脚本,它将成功运行。但是,如果我尝试远程执行它,通过执行ssh并调用脚本如下:

~$ ssh -i ~/.ssh/mykey admin@IP_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/ruby-2.2.4@global/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

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

默认情况下,Ssh会建立一个非登录shell,因此不会为该用户选择适当的环境设置。具体来说,在您的系统上,它不会选择xcodeproj的设置。

使用bash --login建立登录shell:

ssh -i ~/.ssh/mykey admin@IP_ADDRESS -t 'bash --login -c "cd /Users/admin/scripts;./build.sh"'