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