Mehrere Installationen und Verständnis von $ PATH


17

Ich habe eine ältere Version von Git installiert unter:

/usr/bin/

Ich habe kürzlich eine neuere Version heruntergeladen, um:

/usr/local/bin

Wenn ich tippe:

which git

Ich erhalte den Speicherort der alten Version. Ich glaube, das liegt nur daran, dass / usr / bin / in meiner $ PATH-Variablen vor / usr / local / bin steht und daher die ältere Version von git zuerst 'gefunden' wird.

Um dies zu testen, habe ich die ältere Version von git in "git_old" umbenannt. Wenn ich jetzt tippe:

which git

Wie erwartet erhalte ich den Speicherort der neueren Version. Aber wenn ich tippe:

git --version

Ich erhalte folgenden Fehler:

-bash: /usr/bin/git: No such file or directory

Ich frage mich nur, warum mein Computer wieder am alten Speicherort nach Git sucht.

Antworten:


30

Bash speichert den vollständigen Pfad zu ausführbaren Dateien im Cache, sodass nicht $PATHjedes Mal nachgeschaut werden muss.

Mit dem folgenden hashBefehl können Sie sehen, was sich im Cache befindet :

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

Dieser Cache kann geleert werden mit hash -r:

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

Zusätzliche Ressourcen


2
Ich habe das nie gewusst, großartig.
djsmiley2k - CoW

1
Die meisten anderen Shells tun dasselbe, aber nicht alle verwenden sie hash -r, um den Cache neu zu laden. Sänger wie SSH verwenden rehashstattdessen den Befehl.
Moshe Katz

PATH = $ PATH sollte den Cache leeren. hash -r wird nicht benötigt.
jrw32982 unterstützt Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.