5.2. SuSE 10.0: Warum werden nach einem 'su' Programme in /sbin und /usr/sbin nicht gefunden?

Keywords: 10.0 | su | PATH

5.2.1

Der Unterschied zwischen su und su - ist folgender:

Ohne das Minus wirst Du root in dem Verzeichnis, in welchem Du beim Aufruf von su gewesen bist. Allerdings fehlt Dir Deine komplette "root"-Umgebung, wie Du diese aus /etc/profile{.local} hättest. Insbesondere wird die Umgebungsvariable $PATH (der Suchpfad für Programme) nicht geändert. Du bist einfach nur "root", behältst aber sämtliche Umgebungsvariablen des Users bei.

Mit su - wirst Du komplett als "root" eingeloggt (Du bekommst eine Loginshell, siehe dazu man su) und befindest Dich anschliessend auch im Heimatverzeichnis von "root". Außerdem wird $PATH um /sbin und /usr/sbin ergänzt - die in diesen Verzeichnisse enthaltenen Programme, die üblicherweise nur von root gebraucht werden, werden also gefunden.

Um auch beim Aufruf von su ohne minus $PATH wie in älteren SUSE-Versionen zu setzen, kannst Du in /etc/default/su die Option ALWAYS_SET_PATH=yes setzen.

Die Angaben für PATH und SUPATH in /etc/default/su gelten übrigens für su ohne minus und nur in Verbindung mit ALWAYS_SET_PATH=yes.

— Martin Mewes (cboltz)