# shutdown -bash: shutdown: Kommando nicht gefunden.
Nach dem Upgrade von Debian 9 (Stretch) auf Debian 10 (Buster) wurden bei mir als normaler Benutzer und als Benutzer root (mittels su) viele Befehle nicht mehr gefunden. Das liegt daran, dass Linux alle Befehle die nicht direkt in die jeweilige Shell integriert sind und in bestimmten Pfaden gesucht werden, welche in der Variable PATH festgelegt werden. Systemweit wird sie in der Datei /etc/profile verwaltet.
/etc/profiles 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
Hier wird geprüft ob der User root angemeldet ist (id = 0), ist dem so wird PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin, d.h. inkl. /sbin gesetzt. Alle anderen User erhalten einen verkürzten PATH (PATH=“/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games“) In /sbin befinden sich viele Systembefehle, welche normale Benutzer nun nicht mehr im Pfad haben. Wechselt man jedoch via su auf den Benutzer root wird die PATH-Variable scheinbar nicht angepasst.
Lösungsansatz 1: Also gibt man als root (via su erreicht) entweder in Zukunft die Befehle mit Pfad an, z.B. /sbin/shutdown -h now
Lösungsansatz 2: Oder man ändert hier die Datei und ergänzt den entsprechenden Pfad hinter „else“ PATH=“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin“.
Alternativ kann ich auch obigen Block bis auf folgende zwei Zeilen kürzen: PATH=“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin“ export PATH
Hinweis Als normaler User (also nicht root) kann man die Befehle zwar dann direkt aufrufen, sollte jedoch weiterhin nicht genug Rechte haben, dass sich daraus Probleme ergeben, wie das folgende Beipsiel zeigt.
# shutdown -h 12
Failed to set wall message, ignoring: Interactive authentication required. Failed to call ScheduleShutdown in logind, proceeding with immediate shutdown: Interactive authentication required. Failed to set wall message, ignoring: Interactive authentication required. Failed to power off system via logind: Interactive authentication required. Failed to open initctl fifo: Keine Berechtigung Failed to talk to init daemon.
Lösungsansatz 3 Alternativ schafft der folgende Befehl nach jedem Wechsel via „su“ temporär Abhilfe.
PATH=$PATH:/sbin export PATH