bash 脚本中的绝对路径

Ela*_*amb 3 linux shell bash cron

我有一个myscript.sh调用命令的 shell 脚本,比如说mycmd. 例如./myscript.sh,当我从终端运行该脚本时,一切正常。

但是当我将该脚本添加到 crontab 时,输出mycmd为空。当我再次调用/usr/local/bin/mycmd内部时myscript.sh一切正常。

那么为什么我必须使用可执行文件的绝对路径?是不是因为它不在$PATH“cron-bash”中?

Dop*_*oti 5

您完全正确 - 的环境cron可能PATH不包括/usr/local/bin/. 您可以通过在脚本中将该目录附加到以下内容来解决此问题PATH

PATH="$PATH:/usr/local/bin/"
Run Code Online (Sandbox Code Playgroud)

最好的做法,不过,确实是使用显式路径,所有外部的二进制文件,一个脚本,以防万一要求(例如)恶意设计的程序通称为cp被投进PATH以前在什么地方/bin