Wenn ich ein Programm ausführe, ohne den vollständigen Pfad zur ausführbaren Datei anzugeben, muss Bash die Verzeichnisse in $PATH
durchsuchen Um die Binärdatei zu finden, scheint sich Bash den Pfad in einer Art Cache zu merken. Zum Beispiel habe ich einen Build von Subversion von der Quelle nach /usr/local
installiert , dann svnsync help
eingetippt an der Bash-Eingabeaufforderung. Bash hat die Binärdatei /usr/local/bin/svnsync
gefunden nach „svnsync“ und führte es aus. Als ich dann die Installation von Subversion in /usr/local
gelöscht habe und svnsync help
erneut ausgeführt , Bash antwortet:
bash: /usr/local/bin/svnsync: No such file or directory
Aber wenn ich eine neue Instanz von Bash starte, findet und führt es /usr/bin/svnsync
aus .
Wie lösche ich den Cache von Pfaden zu ausführbaren Dateien?
Akzeptierte Antwort:
bash
speichert den vollständigen Pfad zu einem Befehl. Sie können überprüfen, ob der Befehl, den Sie ausführen möchten, mit dem type
gehasht ist Befehl:
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
So löschen Sie den gesamten Cache:
$ hash -r
Oder nur ein Eintrag:
$ hash -d svnsync
Weitere Informationen finden Sie unter help hash
und man bash
.