首頁 > 軟體

如何在Linux中向$PATH新增目錄

2020-06-16 16:33:40

在命令列上鍵入命令時,基本上是告訴 shell 執行具有給定名稱的可執行檔案。在 Linux 中,這些可執行程式,如 ls , find , file 和其他命令,他們都位於你的系統上幾個不同的目錄中。儲存在這些目錄中的任何具有可執行許可權的檔案都可以從任何位置執行。持有可執行程式最常用的目錄是 /bin , /sbin , /usr/sbin , /usr/local/bin 和 /usr/local/sbin 。

但是 shell 如何知道在什麼目錄搜尋可執行程式的呢,或者 shell 搜尋整個檔案系統? 答案很簡單。鍵入命令時, shell 將搜尋使用者 $PATH 變數中指定的所有目錄,以查詢該名稱的可執行檔案。

本文展示了如何將目錄新增到Linux系統的$PATH中。

什麼是 $PATH

該 $PATH  環境變數是一個冒號分隔的列表,告訴哪些目錄搜尋可執行檔案的外殼。

要檢視環境變數 $PATH ,可以使用 printenv 或 echo 命令:

echo $PATH

輸出看起來像這樣:

Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

如果您有兩個同名的可執行檔案,位於兩個不同的目錄中,則 shell 將執行 $PATH 中的第一個所在的目錄的程式。

新增目錄到您的  $PATH

在某些情況下,您可能希望在 $PATH 變數中新增其他目錄。例如,某些程式可能安裝在不同的位置,或者您可能希望為您的個人文件設定專用目錄,但能夠在不指定可執行檔案的絕對路徑的情況下執行它們。要做到這一點,您只需要將目錄新增到您的 $PATH 。

假設您有一個位於主目錄中的名為 bin 的目錄,您可以在其中儲存 shell 指令碼。要將目錄新增到您的 $PATH 型別:

export PATH="$HOME/bin:$PATH"

該 export 命令將修改後的變數匯出到 shell 子進程環境。

您現在可以通過鍵入可執行指令碼名稱來執行指令碼,而無需指定可執行完整路徑。

但是,此更改僅是臨時的,僅在當前 shell 對談中有效。

要使更改成為永久更改,您需要在 shell 組態檔中定義 $PATH 變數。在大多數 Linux 發行版中,當您啟動新對談時,將從以下檔案中讀取環境變數:

•全域性 shell 特定組態檔,如 /etc/environment 和 /etc/profile 。如果要將新目錄新增到所有的系統使用者,請使用此檔案 $PATH 。


•每使用者 shell 特定的組態檔。例如,如果您正在使用 Bash ,則可以在 ~/.bashrc 檔案中設定 $PATH 變數,如果您使用的是 Zsh ,則檔名為 ~/.zshrc 。


在這個例子中,我們將在 ~/.bashrc 檔案中設定變數。使用文字編輯器開啟檔案,並在其末尾新增以下行:

nano ~/.bashrc

檔案 ?/.bashrc

export PATH="$HOME/bin:$PATH"

使用以下 source 命令儲存檔案並將新檔案中的 $PATH 載入到當前 shell 對談中:

source ~/.bashrc

要確認目錄已成功新增,請 $PATH 鍵入以下內容以列印您的值:

echo $PATH

結論

向使用者或全域性 $PATH 變數新增新目錄非常簡單。這讓您無需鍵入可執行檔案的完整路徑就能執行儲存在非標準位置的命令和指令碼。

相同的說明適用於任何 Linux 發行版,包括 UbuntuCentOS , RHEL , Debian 和 Linux Mint 。

如果您有任何問題,請隨時發表評論。


IT145.com E-mail:sddin#qq.com