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 .