Linux

bash 腳本中的絕對路徑

  • February 6, 2017

我有一個myscript.sh呼叫命令的 shell 腳本,比如說mycmd. 當我從終端執行該腳本時,例如./myscript.sh,一切正常。

但是當我將該腳本添加到 crontab 時,輸出mycmd為空。當我/usr/local/bin/mycmd在裡面打電話時,myscript.sh一切都恢復正常了。

那麼為什麼我必須使用執行檔的絕對路徑呢?是不是因為它不在$PATH“cron-bash”中?

你說得對——cron可能有一個PATH不包括的環境/usr/local/bin/。您可以通過在腳本中將該目錄附加到PATH

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

但是,最佳實踐確實是對腳本呼叫的所有外部二進製文件使用顯式路徑,以防萬一(例如)方便呼叫的惡意設計程序cp被放入PATH之前的某個地方/bin

引用自:https://unix.stackexchange.com/questions/342942