Bash findet kein Programm, obwohl es auf meinem Weg ist

26

Ich habe ein Programm auf meinem Weg. Das Programm wird ausgeführt, wenn ein vollständiger Pfad angegeben wurde. Das Programm kann jedoch nicht gefunden werden, wenn ich es nur mit seinem Namen ausführe.

Im Wesentlichen möchte ich verstehen, wie die folgende Ausgabe möglich ist und wie sie behoben werden kann, damit mein Programm tatsächlich ohne Angabe eines vollständigen Pfads gefunden werden kann:

root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

Ich bin auf Ubuntu 12.04 mit Bash. Beachten Sie auch, dass die Warnmeldung aus der Belagerung für die Zwecke dieser Frage nicht relevant ist, da es mich nur interessiert, ob das Programm gefunden und aufgerufen werden kann.

Jona
quelle

Antworten:

38

Beachten Sie die Ausgabe hier:

root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

Bash verwaltet einen internen Hash von zuvor gefundenen ausführbaren Dateien in Ihrem Pfad. In diesem Fall weist es Details auf, dass es zu einem Zeitpunkt eine ausführbare Datei unter / usr / bin / siege gab, und verwendet diesen Pfad erneut, um zu vermeiden, dass erneut gesucht werden muss. Sie müssen bash anweisen, den Pfad für die Belagerung wie folgt manuell aufzuwärmen:

hash siege

Sie können auch alle Hash-Speicherorte löschen:

hash -r
Chris Down
quelle
0

Eine weitere Ursache für dieses Problem könnte sein, dass sich der Pfad zur ausführbaren Datei selbst im Pfad befindet und nicht das Verzeichnis , in dem sich die ausführbare Datei befindet .

Also anstatt zu setzen

/home/myDir/theExecutable

Fügen Sie auf dem Pfad lediglich Folgendes hinzu

/home/myDir
Matthias Braun
quelle