Ubuntu

為什麼 sudo su 和 bash 根腳本路徑不同?

  • December 29, 2016

管理員注意:這個問題是不同的,那麼為什麼 sudo 路徑與 su 不同,因為從 cron 執行的 bash 腳本中的環境變數似乎不會從為使用者設置為 sudo 或 su 的環境變數中繼承。(查看 BUT 之後的所有內容。)

執行 sudo su 並顯示路徑時,我的路徑中有 /usr/local/bin 。我有幾個自定義應用程序放在該文件夾中,目的是使它們在系統範圍內可用。在 etc/sudoers 中,/usr/local/bin 在secure_path 中。

當通過 cron 作業以 root 身份執行 bash 腳本時,/usr/local/bin 顯然沒有保留在路徑中,因為在嘗試執行安裝在那裡的應用程序時找不到命令,儘管它們位於 /etc 中/sudoers。

如何讓這些應用程序對 root 可用?

Ubuntu 16.10

cron如您所見,作業中的環境與su -or sudo -sor呼叫的 shell 中的環境不同sudo /path/to/executable。但是,您可以在 cron 表中設置變數:

PATH="$PATH:/usr/local/bin"
0 0 * * * /path/to/run-me-at-midnight-with-path-changes.sh

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