我试图从ruby通过system
(或使用反引号)运行命令,但遇到了问题.当我尝试调用命令时,shell无法找到它,即使我知道如果我直接调用它也可以.例如:
`zip`
>> sh: zip: command not found
Run Code Online (Sandbox Code Playgroud)
问题似乎是ruby正在使用sh
shell,其中$PATH
没有正确设置,而不是bash
,我不知道为什么.我的应用程序运行的用户bash
默认设置为使用.
有没有办法告诉红宝石使用bash
而不是sh
?
据我所知,唯一的方法是显式调用shell,例如
`bash -c zip`
Run Code Online (Sandbox Code Playgroud)
要么
`#{ ENV['SHELL'] } -c zip`
Run Code Online (Sandbox Code Playgroud)
或者使用系统: system("bash", "-c", command)
但是ruby(以及ruby生成的所有进程)应该继承父进程的环境,因此即使使用另一个shell也可以正确设置$ PATH.你是否可以从cron作业或init脚本等运行ruby,其中PATH没有正确设置?
为什么不直接指定 zip 可执行文件的完整路径。
归档时间: |
|
查看次数: |
5570 次 |
最近记录: |