Ich kenne nur zwei Möglichkeiten: alias foo=bar
und function foo() { bar }
.
Der Grund, den ich frage, ist, dass ich - plötzlich in einer meiner Bash-Sitzungen - den ln
Befehl nicht ausführen kann, weil bash
er mit -bash: /usr/local/.../ln: No such file or directory
(wobei der /usr/local/.../
einer der Einträge in meiner PATH
Umgebungsvariablen ist) fehlerhaft ist .
Es ist jedoch kein PATH
Problem, denn wenn ich es ausführe which ln
, wird die erwartete Binärdatei von ausgegeben /usr/bin/ln
(die ich gut ausführen kann, wenn ich den absoluten Pfad spezifiziere).
Ich habe auch ln
meine alias
und function
Erklärungen überprüft , und es gibt nichts:
$ declare -f | grep ln
$ alias | grep ln
Das Problem tritt nur in einer Bash-Sitzung auf. Wenn ich eine neue Shell starte, funktioniert sie wieder einwandfrei, aber ich möchte wissen, was dieses Problem in dieser einen Bash-Sitzung plötzlich verursacht hat.
Irgendwelche Ideen, was dies verursachen könnte?
type ln
bekomme ich,ln is hashed (/usr/local/.../ln)
was das Problem zu sein scheint, aber was bedeutet es genau, dass es "gehasht" ist? Ich habe noch nie von dieser Funktion in Bash gehört.hash -l
Befehl sehen. Es wird dynamisch erstellt, wenn Sie Befehle verwenden.hash -r
, um die Befehl-zu-Pfad-Hashtabelle zurückzusetzen, und binln
jetzt wieder funktionsfähig.