Frage: Hat die Rangfolge im PATH Einfluss auf Ubuntu bei der Auswahl des zu verwendenden Programms?
Mehr Details:
Ich verwende .bashrc
zum 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 $PATH
wird von Anfang bis Ende durchsucht und die erste passende ausführbare Datei wird ausgeführt.
Siehe die folgenden Fragen und Antworten zum gleichen Thema:
Reihenfolge der unter Linux auszuführenden Dateien und wie man sie ändert
- Wie sucht Unix nach ausführbaren Dateien?
Also: Wer zuerst findet, mahlt zuerst!