Environment-Variables

路徑環境變數在 Linux 中是如何工作的?

  • July 2, 2020

我很困惑 PATH 環境變數在 Linux 下是如何工作的。我是 Linux Mint 15 使用者。

首先, 我閱讀了有關編輯 文件/home/.bashrc並執行.PATH=$PATH:/directory
/etc/bash.bashrc
/usr/local/bin

路徑變數在Linux下是如何工作的,應該放在哪裡?

這裡要掌握的基本概念是 PATH 可以在很多地方定義。正如@demure 在他的回答中解釋的那樣,PATH=$PATH:/new/dir意味著add /new_dir to $PATH,它不會清除原來的$PATH.

現在,有許多文件的一個原因loginnon-loginshell 的概念密切相關。請參閱此處以獲取不錯的摘要。以下來自 bash 手冊頁(強調我的):

當 bash 作為互動式登錄 shell 或作為帶有 –login 選項的非互動式 shell 呼叫時,**它首先從文件 /etc/profile 中讀取並執行命令(如果該文件存在)。讀取該文件後,它會按順序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,**並從第一個存在且可讀的命令中讀取並執行命令。當 shell 啟動時,可以使用 –noprofile 選項來禁止這種行為。

當您第一次登錄系統時,您會啟動一個登錄shell,以便 bash 讀取上面列出的文件。大多數發行版都設置了一個系統範圍$PATH(適用於所有使用者)/etc/profile,您應該在此處進行您希望應用於所有使用者的任何更改。這是我在我的 Debian 上的:

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

登錄後,當您打開終端時,您將啟動一個互動式的非登錄shell。這就是man bash必須要說的那些:

  When  an  interactive shell that is not a login shell
  is started, bash reads  and  executes  commands  from
  /etc/bash.bashrc and ~/.bashrc, if these files exist.

因此,每次打開新終端時都會讀取這些文件。您最終的 $PATH 是所有文件中的值的組合。在典型情況下,您使用圖形登錄管理器登錄並開始一個新會話。在這一點上,您$PATH是各種profile文件中定義的任何內容。如果您打開一個終端,那麼您將處於一個互動式外殼中,並且bashrc會讀取不同的文件,這些文件可能會將內容附加到$PATH.


總而言之,您真正需要知道的是,您可以$PATH通過編輯來更改使用者的$HOME/.profile.

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