3

我通过本指南安装了 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

4

3 回答 3

2

在您的 crontab 行中,您可以在脚本运行之前获取 .bash_login。

source ~/.bash_login && <your original command here>

这样,您的脚本在运行时将拥有您所拥有的一切。

于 2012-07-13T07:40:37.437 回答
0

建议执行此操作的常用方法是将可执行文件的完整路径放在您的 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

于 2012-07-13T05:27:38.430 回答
0

我实际上发现这篇文章对我有很大帮助:LINK

我设法按照我的意愿运行了我的脚本,但理论上这些问题仍然存在,因为这个问题通常仍然会影响 cron 的使用。

于 2012-07-14T00:35:27.067 回答