Auf einem bestimmten System erhalte ich diese Ausgabe:
$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Dies bedeutet, dass der Befehl ausgeführt wird
$ foo
Die Shell sucht in dieser Reihenfolge nach ausführbaren Dateien:
/usr/local/bin/foo
/usr/bin/foo
/bin/foo
/usr/local/games/foo
/usr/games/foo
und führe den ersten aus.
which foo
würde den Pfad des ersten dieser Übereinstimmungen zurückgeben oder nichts, wenn keine ausführbare Datei mit dem Namen foo
in den PATH
Verzeichnissen vorhanden ist (beachten Sie den which -a
Schalter, der alle Übereinstimmungen in der Reihenfolge zurückgibt, nicht nur die erste).
Sie können beispielsweise die Verzeichnisse in der PATH
Variablen neu ordnen, um die Suchreihenfolge zu ändern. Dies ist jedoch wahrscheinlich keine Lösung für Ihre "echte" Frage. Wenn sich eine ausführbare Datei in einem Verzeichnis mit höherer Priorität befindet, das die gesuchte Datei "spiegelt", können Sie entweder die erste wegschieben oder einfach die niedrigere Priorität mit ihrem vollständigen Pfad ausführen.
Ich erkenne mex
als Teil der Matlab-Installation. Beim Versuch zu erraten, was Sie tun möchten, könnten Sie den PATH
Vorgang möglicherweise für einen einzelnen laufenden Prozess vorübergehend ändern :
$ PATH=/home/user/myownexecs:$PATH matlab
Wo /home/user/myownexecs/mex
ist die mex
ausführbare Datei, die Sie Vorrang haben möchten. Dadurch wird die PATH
Variable für den matlab
Prozess vorübergehend geändert, das System wird jedoch im Allgemeinen nicht dauerhaft beeinträchtigt.
Sie sollten Ihre Frage klären und fragen, was Sie wirklich tun möchten, um passende Antworten zu erhalten.