在命令行上鍵入命令時,實質(zhì)是在告訴Shell運行指定可執(zhí)行文件的名稱。在Linux,這些可執(zhí)行文件可以是ls
,find
,file
等命令。
通常在你的系統(tǒng)會默認(rèn)設(shè)置幾個不同的目錄。這些目錄中存儲著具有可執(zhí)行權(quán)限的二進(jìn)制文件,這些二進(jìn)制文件都可以在任何目錄中運行。
常見目錄是/bin
,/sbin
,/usr/sbin
,/usr/local/bin
和/usr/local/sbin
。
當(dāng)您在終端運行命令時,shell程序會在$PATH
環(huán)境變量包含的目錄中搜索命令的可執(zhí)行文件。
本教程介紹如何在Linux 設(shè)置PATH環(huán)境變量。你可以使用echo或者printenv打印當(dāng)前的$PATH變量。
什么是 PATH 環(huán)境變量
$PATH環(huán)境變量是一個冒號分隔的目錄列表,告訴shell哪些目錄是用于搜索命令的可執(zhí)行二進(jìn)制文件。
您可以使用printenv
或echo
命令查看$PATH
包含的目錄。兩個命令都有相同的輸出。
如果您在兩個不同的目錄中有兩個共享相同名稱的可執(zhí)行文件,則Shell將運行從$PATH
搜索到的第一個目錄執(zhí)行該文件。
printenv PATH
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
將目錄添加 PATH
在某些情況下,您可能需要添加其他目錄$PATH
環(huán)境變量。例如,某些程序可能安裝在不同的目錄。
但是為了在不指定可執(zhí)行文件絕對路徑并運行它。因此,您需要將目錄添加到$PATH
環(huán)境變量。
假設(shè)您的家目錄中有一個bin
的目錄,要將目錄添加到您的$PATH
,請運行命令export PATH="$HOME/bin:$PATH"
。
現(xiàn)在,您只需鍵入可執(zhí)行二進(jìn)制的文件的名稱即可運行應(yīng)用。但是,此更改只是臨時的,僅在當(dāng)前的Shell會話中有效。
export PATH="$HOME/bin:$PATH"
持久化PATH
export
命令用于設(shè)置環(huán)境變量,使用export
命令設(shè)置環(huán)境變量僅在當(dāng)前的shell會話可用。要使更改永久生效,您需要在PATH配置文件設(shè)置$PATH
環(huán)境變量。
在大多數(shù)Linux發(fā)行版中,當(dāng)系統(tǒng)啟動時,將從etc/environment
和etc/profile
以及~/.bashrc
文件中讀取環(huán)境變量。
全局的配置文件是etc/environment
和etc/profile
。如果要為系統(tǒng)所有用戶設(shè)置$PATH
環(huán)境變量,請在這兩個文件中修改。
當(dāng)你為指定的用戶設(shè)置$PATH
環(huán)境變量時,請在~/.bashrc
文件修改$PATH
變量,如果使用的是Zsh,則文件是~/.zshrc
。
在本教程中,我們將在etc/environment
文件設(shè)置PATH環(huán)境變量,也就是為所有用戶設(shè)置。
例如命令echo export PATH="$HOME/bin:$PATH" | sudo tee -a etc/environment
將會把目錄$HOME/bin
添加到PATH環(huán)境變量,使用echo命令和tee命令。
echo PATH="$HOME/bin:$PATH" | sudo tee -a etc/environment
現(xiàn)在我們已經(jīng)持久化PATH環(huán)境變量,如果你沒有使用export命令設(shè)置PATH,那么當(dāng)前shell會話PATH環(huán)境變量并不會被修改。
你可以使用source
命令將加載環(huán)境變量到當(dāng)前的shell會話中。當(dāng)然也可以使用export命令設(shè)置PATH。
要確定是否正確設(shè)置PATH環(huán)境變量,可以命令echo $PATH
,查看當(dāng)前$PATH
環(huán)境變量的值。
source ~/.bashrc
echo $PATH
結(jié)論
在在Linux 設(shè)置PATH環(huán)境變量非常簡單。這使您可以在任何目錄運行你的命令或者應(yīng)用,且不需要鍵入可執(zhí)行文件的完整路徑。
相同的說明適用于任何Linux發(fā)行版,包括Ubuntu,CentOS,RHEL,Debian和Linux Mint。如有任何疑問,請隨時發(fā)表評論。
評論