ENV 変数の優先順位によって、使用するプログラムが変わりますか?

ENV 変数の優先順位によって、使用するプログラムが変わりますか?

質問: PATH の優先順位は、Ubuntu が使用するプログラムを選択する際に影響しますか?

詳細: プライベート env PATH を宣言するために使用し.bashrc、/usr/local/bin にある ubuntu リポジトリから MSP430-gcc をインストールし、独自の 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最初から最後まで検索され、最初に一致する実行可能ファイルが実行されます。

同じトピックに関する次の Q&A を参照してください。

つまり、最初に見つけたら、最初に使用するのです!

関連情報