Влияет ли порядок приоритета переменной ENV на то, какую программу использовать?

Влияет ли порядок приоритета переменной ENV на то, какую программу использовать?

Вопрос: Влияет ли порядок приоритетов в PATH на выбор Ubuntu используемой программы?

Подробнее: Я использую .bashrcдля объявления частного окружения PATH, я установил MSP430-gcc из репозиториев Ubuntu, который находится в /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, дата обновления: 16 декабря 2014 г.

Исправить: Мне пришлось изменить приоритет окружения PATH, отредактировав .bashrc и изменив приоритет, а также поместив свой собственный путь перед системным 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выполняется от начала до конца, и первый соответствующий исполняемый файл будет запущен.

См. следующие вопросы и ответы по той же теме:

Итак, первый найденный, первый использованный!

Связанный контент