Wie kann ich den Pfad ändern, der mit der Ausgabe von welchem ​​Befehl geliefert wird?

712
erogol

Wenn ich which mexam Linux-System bin, gibt es einen Pfad, aber ich möchte diesen Pfad zu einem anderen ändern. Wie kann ich diesen Standardpfad auf einen anderen Speicherort setzen?

1
Wenn "which mex" einen bestimmten Pfad zurückgibt, bedeutet dies, dass die ausführbare Datei "mex" tatsächlich dort abgelegt wird. Wenn Sie möchten, dass sich die ausführbare Datei an einem anderen Ort befindet, müssen Sie sie verschieben. Bitte erläutern Sie, was genau Sie tun müssen, und geben Sie ein konkretes Beispiel. slhck vor 10 Jahren 2
... aber sobald es mehrere "mex" im Suchpfad gibt, ist das Problem nicht so trivial ([schönes Beispiel] (http://superuser.com/q/346403/173159)) bluenote10 vor 10 Jahren 0

1 Antwort auf die Frage

3
Daniel Andersson

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:

  1. /usr/local/bin/foo
  2. /usr/bin/foo
  3. /bin/foo
  4. /usr/local/games/foo
  5. /usr/games/foo

und führe den ersten aus.

which foowürde den Pfad des ersten dieser Übereinstimmungen zurückgeben oder nichts, wenn keine ausführbare Datei mit dem Namen fooin den PATHVerzeichnissen vorhanden ist (beachten Sie den which -aSchalter, der alle Übereinstimmungen in der Reihenfolge zurückgibt, nicht nur die erste).

Sie können beispielsweise die Verzeichnisse in der PATHVariablen 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 mexals Teil der Matlab-Installation. Beim Versuch zu erraten, was Sie tun möchten, könnten Sie den PATHVorgang möglicherweise für einen einzelnen laufenden Prozess vorübergehend ändern :

$ PATH=/home/user/myownexecs:$PATH matlab 

Wo /home/user/myownexecs/mexist die mexausführbare Datei, die Sie Vorrang haben möchten. Dadurch wird die PATHVariable für den matlabProzess 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.