为什么cron条目的PATH错误?

fly*_*ike 1 bash cron

我在 cron.d 中有一个条目:

31 17 * * * root /home/some_user/.bash_profile; /home/some_user/bin/some_script
Run Code Online (Sandbox Code Playgroud)

配置文件设置了一个特定的路径,我在配置文件中回显当前路径以确保其正确。但是,当脚本执行时,其中的命令失败,因为它不在 PATH 中,并且当我在脚本中显示当前 PATH 时 - 它不是配置文件中设置的。

为什么配置文件中设置的 PATH 在脚本的执行中不存在?

Dan*_* t. 9

为了设置所需的环境变量,您需要.bash_profile使用. /home/some_user/.bash_profile. 在您的情况下,您正在执行 bash_profile 文件,该文件基本上会执行该文件并退出 shell。下次运行 some_script 时,它将以新的环境变量开始。检查此链接 -采购与执行

另一个选项是PATH在 crontab 文件的顶部设置环境变量。这样,其余的脚本就可以看到它。