我通过本指南安装了 Ruby 1.9.3p125(直到第 5 点):LINK
现在我遇到了这个问题:我的脚本在我的命令行中运行良好,但是如果我从 Cron 执行它,它似乎使用默认环境并且默认为 /usr/bin/ruby 而不是我的(~/.rvm/rubies/ruby -1.9.3-p125/bin/ruby)。执行命令(手动或通过 cron)产生相同结果的最佳方法是什么?
PS:它似乎跳过处理 ~/.bash_login 例如,其中 rvm 被加载到 PATH
在您的 crontab 行中,您可以在脚本运行之前获取 .bash_login。
source ~/.bash_login && <your original command here>
这样,您的脚本在运行时将拥有您所拥有的一切。
建议执行此操作的常用方法是将可执行文件的完整路径放在您的 crontab 中。例如
crontab 应该显示:
/Users/Poochie/.rvm/rubies/ruby-1.9.3-p125/bin/ruby /full/path/to/script.rb
或任何完整的路径。它比尝试加载 rvm 更强大,因为这里 rvm 脚本正在为您修改路径。如果要将其设置为 rvm 默认 ruby 中的任何一个(例如 rvm 使用 xxx --default 设置的任何一个),您可以使用:/Users/Poochie/.rvm/bin/ruby
作为可执行文件,例如:
/Users/Poochie/.rvm/bin/ruby /full/path/to/script.rb
我实际上发现这篇文章对我有很大帮助:LINK
我设法按照我的意愿运行了我的脚本,但理论上这些问题仍然存在,因为这个问题通常仍然会影响 cron 的使用。