Debian - „command“-Befehl nicht gefunden

Debian - „command“-Befehl nicht gefunden

Meine Shell Bash gibt einen bash : ... : command not foundFehler aus und ich weiß nicht, wie ich ihn lösen soll. Außerdem hatte ich keine Ahnung, welche Tags außer „bash“ „Debian“ ausgewählt werden sollten.

Ich bin Root, und diese beiden Programme sind auch schon installiert. Das Betriebssystem ist Debian Buster und frisch installiert. Während des Installationsvorgangs habe ich alle Optionen im Tasksel-Konfigurationsschritt deaktiviert. Ich denke, das hängt eher mit meiner Shell zusammen. Später installiere ich Awesome Tiling Windows.

Hier die Ausgabe für meinen Pfad: root@machine:~# echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Hier zwei Beispiele: Zuerst habe ich versucht, das Programm auszuführen. Dann habe ich geprüft, ob das Programm installiert ist.

root@machine:~# modprobe --verbose
bash: modprobe: command not found

root@adrien:~# apt-get install kmod 
Reading package lists... 
Done Building dependency tree
Reading state information... 
Done kmod is already the newest version (26-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

root@machine:~# openvpn 
bash: openvpn: command not found

root@adrien:~# apt-get install openvpn 
Reading package lists... Done Building dependency tree
Reading state information... 
Done openvpn is already the newest version (2.4.7-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Antwort1

Überprüfen Sie $PATH, ob diese Programme darin enthalten sind.

$ echo $PATH

sollte zeigen, was Ihr Systemsuchpfad ist. Vergleichen Sie es mit dem

$ dpkg-query -L <package_name>

Wird dir zeigen.

$ command -v program

zeigt Ihnen den vollständigen/absoluten Pfad zum Programm.

Wenn Sie es auf diese Weise nicht finden können, versuchen Sie:

find /sbin modprobe
find /usr/sbin modprobe

Modprobe befindet sich in /sbin(oder könnte in sein /usr/sbin) und ist ein symbolischer Link zu . Wenn Sie den Pfad zum Verzeichnis, in dem sich Modprobe befindet, nicht kennen, können Sie es nicht verwenden, es sei denn, Sie geben den vollständigen Pfad an , /bin/kmodz. B. .$ /sbin/modprobe

Sie können das Ergebnis senden $ set | grep PATHund wir können sehen, was damit nicht stimmt.

Da Ihre Ausgabe PATHanzeigt, dass Sie kein /sbinund /usr/sbindarin haben, müssen Sie es in Ihrem hinzufügen $HOME/.bashrc. Um es zuerst zu testen, verwenden Sie:

$ export PATH=$PATH:/sbin:/usr/sbin

und prüfen Sie, ob es funktioniert. Wenn ja, fügen Sie es hinzu $HOME/.bashrc, und wenn Sie möchten, dass es für jeden Benutzer verfügbar ist, fügen Sie es hinzu, /etc/profilewie von @GAD3R vorgeschlagen.

PS. $ist eine Eingabeaufforderung, Sie geben es nicht in die Konsole ein, es zeigt, dass der Befehl in der Shell verwendet wird. Im Allgemeinen $wird für normale Benutzer als Shell-Eingabeaufforderungsindikator und #für verwendet root. Da es ein allgemeines Problem sein kann, nicht nur für Root, habe ich verwendet $. Bedenken Sie, dass in Ihrem Fall, wenn Sie root$ sind, # „wird“, aber da Sie bereits als Root angemeldet sind, ändert sich nichts.

Antwort2

Beachten Sie, dass Debian in Debian 10 zu einem anderen Zweig des Befehls gewechselt ist („Buster“). Anders als in früheren Debian-Versionen werden und sunicht mehr automatisch zu Ihrem hinzugefügt /sbin, wenn Sie plain verwenden, um Root zu werden./usr/sbin/usr/local/sbin$PATHsu

Dies hat viele Leute überrascht.

Sie können su -stattdessen verwenden, um die Umgebung beim Wechsel zum Root-Benutzer explizit vollständig neu zu initialisieren: Dadurch werden die .../sbinVerzeichnisse in eingeschlossen $PATH.

Alternativ können Sie das Hinzufügen der Verzeichnisse automatisieren, $PATHwenn Sie Root werden.wie in der Antwort von GAD3R vorgeschlagen.


Außerdem ist mir aufgefallen, dass ich meinen Computer mit folgendem neu starten kann:

root@machine:~# Neustart

anstatt.

root@machine:~# systemctl reboot

(Hinweis: Bei Stack Exchange ist es üblich, in jedem Fragenpost nur eine Frage zu stellen. Solche Mehrfachfragen erschweren es anderen Personen mit demselben Problem, passende Antworten zu finden.)

Dies ist ein Kompatibilitäts-Wrapper, der es Ihnen ermöglicht, weiterhin die klassischen Shutdown-/Reboot-Befehle im SysV-Stil zu verwenden, die bei vielen langjährigen Linux-/UNIX-Administratoren tief im Muskelgedächtnis verankert sein dürften.

Antwort3

Sie können den Speicherort der ausführbaren Datei überprüfen: $ which modprobeund$ which openvpn

Mit suden Befehlen sind

# /usr/sbin/modprobe
# /sbin/openvpn

Damit su -wird

# modprobe
# openvpn

D. h., es werden nur vollständige Root-Berechtigungen bzw. der Root-Pfad bereitgestellt. Dies ist für einige Befehle su -erforderlich : Debian 10./sbin//usr/sbin/

Antwort4

Bearbeiten Sie Ihre /etc/profilewie folgt (die ersten 6 Zeilen):

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

Starten Sie dann Ihr System neu.

verwandte Informationen