Ändert die Rangfolge der ENV-Variablen, welches Programm verwendet werden soll?

Ändert die Rangfolge der ENV-Variablen, welches Programm verwendet werden soll?

Frage: Hat die Rangfolge im PATH Einfluss auf Ubuntu bei der Auswahl des zu verwendenden Programms?

Mehr Details: Ich verwende .bashrczum Deklarieren des privaten Umgebungspfads. Ich habe MSP430-gcc aus Ubuntu-Repositorys installiert, die sich in /usr/local/bin befinden, und ich habe meinen eigenen MSP430-gcc kompiliert und ihn hier abgelegt /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

Wenn ich Ubuntu frage, welchen MSP430-gcc es verwendet, lautet die Antwort normalerweise: /opt/compilers/mspgcc-4.7.3/bin.

Aber jetzt beantwortet es Folgendes:

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

Problem: Mir ist aufgefallen, dass die obige Einstellung nach einem Update nicht funktioniert. (kann durch ein Update verursacht werden oder nicht) Ich verwende Ubuntu 14.04 LTS und habe das Update am 16. Dezember 2014 durchgeführt.

Fix: Ich musste die Priorität des Umgebungspfads ändern, indem ich .bashrc bearbeitete und die Priorität änderte und meinen benutzerdefinierten Pfad wie unten vor den Systempfad setzte

#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

Die Geschichte dahinter: Dieses Problem wurde bereits gemeldet (PATH erscheint zuerst und hat die höchste Priorität (von links nach rechts):

Antwort1

Für mich ist das logisch: Es $PATHwird von Anfang bis Ende durchsucht und die erste passende ausführbare Datei wird ausgeführt.

Siehe die folgenden Fragen und Antworten zum gleichen Thema:

Also: Wer zuerst findet, mahlt zuerst!

verwandte Informationen