假设我有一个只包含以下内容的script/tmp/printy.py:

#! /usr/bin/python2.7
print "hello world"

为什么这样做:
chmod +x /tmp/printy.py
export PATH=$PATH:/tmp/
printy.py

但这并不是:
chmod +x /tmp/printy.py
export PATH=$PATH:/tmp/
python printy.py

还有什么可以添加到cron作业中,比如说,cron作业应该使用特定的解释器运行printy.py,以使其工作?
很可能是重复的,但我找不到任何东西,也许我用错了搜索词?

最佳答案

shell中的路径查找仅适用于命令,而不是任意文件。在第一个示例中,printy.py是命令名。在第二种情况下,它只是Python的一个参数,Python不使用PATH来查找要运行的脚本;它希望printy.py位于当前工作目录中。
您可以使用PYTHONPATH-m的组合来模拟:

PYTHONPATH=$PATH python -m printy

关于linux - 为什么在bash中使用显式解释器不使用路径变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47656052/

10-11 21:25