Ubuntu
為什麼 sudo su 和 bash 根腳本路徑不同?
管理員注意:這個問題是不同的,那麼為什麼 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 -
orsudo -s
or呼叫的 shell 中的環境不同sudo /path/to/executable
。但是,您可以在 cron 表中設置變數:PATH="$PATH:/usr/local/bin" 0 0 * * * /path/to/run-me-at-midnight-with-path-changes.sh