![ENV 变量的优先顺序是否会改变要使用的程序?](https://linux22.com/image/977472/ENV%20%E5%8F%98%E9%87%8F%E7%9A%84%E4%BC%98%E5%85%88%E9%A1%BA%E5%BA%8F%E6%98%AF%E5%90%A6%E4%BC%9A%E6%94%B9%E5%8F%98%E8%A6%81%E4%BD%BF%E7%94%A8%E7%9A%84%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
问题: PATH 中的优先顺序会影响 Ubuntu 选择使用哪个程序吗?
更多细节:
我使用.bashrc
它来声明私有环境 PATH,我已经从 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
从头到尾搜索,然后运行第一个匹配的可执行文件。
请参阅以下有关同一主题的问答:
因此,先发现,先使用!