ENV 變數的優先順序是否會改變要使用的程序?

ENV 變數的優先順序是否會改變要使用的程序?

問題: PATH 中的優先順序是否會影響 Ubuntu 選擇使用哪個程式?

更多細節: 我用於.bashrc聲明私有環境路徑,我已經從 ubuntu 儲存庫安裝了 MSP430-gcc,該儲存庫位於 /usr/local/bin 中,並且我編譯了自己的 MSP430-gcc 並將其放置在/opt/compilers/msp430-gcc-4.7.3

#msp430-gcc 4.7.3 in .bashrc
export PATH=$PATH:/opt/compilers/mspgcc-4.7.3/bin
#the corresponding echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/opt/tools/MSP430Flasher_1.3.0:/opt/compilers/Sourcery_G++_Lite/bin:/opt/compilers/mspgcc-4.7.3/bin

當我嘗試詢問 Ubuntu 它使用哪個 MSP430-gcc 時?它曾經回答過:/opt/compilers/mspgcc-4.7.3/bin

但現在它正在回答以下問題:

$which msp430-gcc
/usr/bin/msp430-gcc  #the default installation from Ubuntu repo

問題: 我注意到更新後上述設定不起作用。 (可能是也可能不是由更新引起的)我正在使用 Ubuntu 14.04 LTS 並更新日期:2014 年 12 月 16 日

使固定: 我必須透過編輯 .bashrc 來更改環境 PATH 的優先級,並更改優先順序並將我的自訂路徑放在系統 PATH 之前,如下所示

#msp430-gcc 4.7.3 in .bashrc
export PATH=/opt/compilers/mspgcc-4.7.3/bin:$PATH (note the difference in locating :$PATH)

#echo $PATH
/opt/compilers/mspgcc-4.7.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/opt/tools/MSP430Flasher_1.3.0:/opt/compilers/Sourcery_G++_Lite/bin

背後的故事: 此問題已被報告(PATH 出現在第一個具有最高優先級(從左到右):

答案1

對我來說,這是合乎邏輯的:$PATH從頭到尾搜尋並運行第一個匹配的可執行檔。

請參閱以下有關同一主題的問答:

所以,先發現,先用!

相關內容