bash 脚本中的绝对路径

bash 脚本中的绝对路径

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

但是当我将该脚本添加到 crontab 时,输出为mycmd空。当我打电话时,/usr/local/bin/mycmd一切myscript.sh又恢复正常了。

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

答案1

你说得完全正确 - 的环境cron可能有一个PATH不包括的/usr/local/bin/。您可以通过在脚本中将该目录附加到以下位置来解决此问题PATH

PATH="$PATH:/usr/local/bin/"

不过,最佳实践确实是对脚本调用的所有外部二进制文件使用显式路径,以防万一(例如)方便地调用的恶意设计的程序cp被放入PATHbefore 的某处/bin

相关内容