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.

user1551817
quelle

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

Deltik
quelle
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