如何在啟動時修改 PATH 以影響每個人?

如何在啟動時修改 PATH 以影響每個人?

我安裝了一個JDK ,並在我用來修改PATH變數的地方/opt放置了一個shell腳本,這樣我就可以很好地執行Java。問題是,這僅適用於我的本機帳戶,不適用於.如果我嘗試執行該命令,它會顯示.我嘗試將命令放在and的末尾,但這兩個選項似乎都無法改變這種行為。我希望能夠運行,那麼我在哪裡可以在啟動時修改 PATH 以便看到它?/etc/profile.d/exportsudosudosudo: java: command not foundexport.bashrcrc.localsudo javasudo

編輯:為了記錄,這些是我在我嘗試過的每個地方添加的行:

export JAVA_HOME="/opt/jdk-16.0.2"
export PATH="$PATH:${JAVA_HOME}/bin"

答案1

你的問題不在於每個人,甚至不在於任何人=root。你的問題只是sudo因為sudo使用自己的路徑;它不使用(呼叫)shell 中的一組,或任何其他 shell 或 shell 配置(除非您使用sudo -i它來執行目標使用者的 shell,預設 root,及其通常的「登入」配置),因為使用使用者可控的PATH可能會破壞安全性,這違反了sudo 存在的全部理由。看

如何設定 sudo 指令的路徑
為什麼 `sudo env "PATH=$PATH"` 會做任何事?
透過 sudo 傳遞 PATH
作為 sudo 用戶的 PATH 變數出現問題

最直接的解決方案是使用要執行的程式的完整路徑名稱;而不是把它寫出來,你可以這樣做

sudo $(which java) # or maybe $(type -p java) in bash 

它在中搜尋java你的shell 的 PATH 然後使用以下指令呼叫 sudo結果

相關內容