【发布时间】:2012-09-03 01:26:47
【问题描述】:
在我的 ruby 脚本中,我需要 gmail gem:
require 'rubygems'
require 'gmail'
在 shell 中运行时,它可以正常工作:
ruby my-script.rb
当我把它放在一个 cron 作业中时,它无法执行:
* * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb
日志显示无法加载gmail gem:
/usr/local/rvm/rubies/ree-1.8.7-2011.03/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- gmail (LoadError)
好吧,当我这样做时(将 cmd 放入 bash -l -c 'CMD'):
* * * * * /bin/bash -l -c 'cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb'
它又可以正常工作了。
为什么?
ps.我知道 arg -l 使 bash 成为登录 shell,但这有什么不同吗?
【问题讨论】: