Die Antwort, die Sie wahrscheinlich sehen, zeigt nicht an, dass die Befehle nicht existieren, sondern dass sie "nicht gefunden" werden:
telemachus ~ $ ifconfig -a bash: ifconfig: command not found
Einige Fehlermeldungen sind unbrauchbar, aber diese ist relativ hilfreich. Die Wörter "nicht gefunden" sagen Ihnen, wo das Problem liegt. Ihre Shell (in meinem Fall ist es eindeutig Bash) sucht nach Befehlen entlang ihrer $PATH
Variablen. Das PATH
ist eine Menge von durch Doppelpunkt getrennten Werten. Jeder Wert ist ein Verzeichnis, in dem ausführbare (binäre) Programme abgelegt werden, und die Shell sucht nach Befehlen in der Reihenfolge von links nach rechts entlang der Verzeichniskette. So können Sie sehen, was Ihr PFAD ist:
telemachus ~ $ echo $PATH /home/telemachus/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
(Beachten Sie, dass der Fall wichtig ist, PATH ist alles übergeordnet. Auch die $
Angelegenheit.) Also sucht meine Shell nach Befehlen im bin
Verzeichnis in meinem Home-Ordner, dann in /usr/local/bin
, dann in /usr/bin
usw. Die Reihenfolge ist wichtig, da Sie manchmal zwei Versionen von einer haben Programm, und Sie möchten sicherstellen, dass Sie zuerst ein bestimmtes Programm finden. (Ich habe eine andere Version von Ruby in meinem $HOME/bin
Verzeichnis als die systemweite, und ich möchte, dass sie zuerst gefunden wird.)
Um ein Verzeichnis zu PATH hinzuzufügen, können Sie normalerweise das Profil Ihrer Shell bearbeiten. Je nachdem, welche Linux-Distribution Sie verwenden, wird diese Datei als .profile
oder .bash_profile
bezeichnet und befindet sich in Ihrem Home-Verzeichnis. Dateien, die mit einem .
(oft als Punktdateien bezeichnet) beginnen, werden standardmäßig ausgeblendet. Sie werden nicht in einem GUI-Dateimanager angezeigt, und der ls
Befehl kann sie nicht (ohne Hilfe) sehen. Um zu sehen, was in Ihrem Zuhause vorhanden ist, öffnen Sie eine Shell (Sie befinden sich standardmäßig in Ihrem Home-Verzeichnis in einer neuen Shell), und geben Sie ls -A ein . Das -A- Flag weist den Befehl ls an, versteckte Dateien anzuzeigen. Sie sollten entweder .profile
oder sehen.bash_profile
, die Sie dann bearbeiten können. Fügen Sie einen Doppelpunkt und den vollständigen Pfad des gewünschten Verzeichnisses hinzu (ein vollständiger Pfad sollte mit einem beginnen/
um seine Position von der Wurzel Ihres Laufwerks anzugeben). Sie möchten keinen Doppelpunkt nach dem letzten Wert. Wenn Sie einen normalen PFAD haben, können Sie /sbin
diesen Weg hinzufügen :
PATH=$PATH:/sbin
Trotz alledem kann man immer noch nicht direkt auf /sbin/shutdown
diesen Weg gelangen:
telemachus ~ $ /sbin/shutdown -h now shutdown: you must be root to do that!
Durch die Angabe des vollständigen Pfads des Befehls habe ich den Befehl "gefunden", konnte ihn jedoch immer noch nicht ausführen. Einige Befehle shutdown
benötigen spezielle Berechtigungen. Um die Erlaubnis zur Ausgabe shutdown
von einer Shell zu erhalten, müssen Sie su
oder sudo
abhängig davon, auf welchem System Sie sich befinden. Ich habe bereits einen Roman geschrieben, das ist also eine Geschichte für einen anderen Tag.