A ordem de precedência com a variável ENV altera qual programa usar?

A ordem de precedência com a variável ENV altera qual programa usar?

Pergunta: A ordem de precedência no PATH influencia o Ubuntu na escolha de qual programa usar?

Mais detalhes: Eu uso .bashrcpara declarar PATH de ambiente privado, instalei o MSP430-gcc dos repositórios do Ubuntu que ficam em/usr/local/bin e compilei meu próprio MSP430-gcc e coloquei-o em /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

Quando tento perguntar ao Ubuntu qual MSP430-gcc ele usa? Costumava responder: /opt/compilers/mspgcc-4.7.3/bin.

Mas agora está respondendo o seguinte:

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

Problema: Percebi que a configuração acima não estava funcionando após uma atualização. (pode ou não ser causado por uma atualização) Estou usando o Ubuntu 14.04 LTS e atualizado na data: 16 de dezembro de 2014

Consertar: Tive que alterar a precedência do ambiente PATH editando .bashrc e alterar a precedência e colocar meu caminho personalizado antes do PATH do sistema conforme abaixo

#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

A história por trás: Este problema já foi relatado (PATH aparece primeiro e tem maior precedência (da esquerda para a direita):

Responder1

Para mim, isso é lógico: o $PATHé pesquisado do início ao fim e o primeiro executável correspondente será executado.

Veja as seguintes perguntas e respostas sobre o mesmo tópico:

Então, primeiro encontrado, primeiro usado!

informação relacionada