Warum ist $ das Standardsymbol für eine Benutzer-Shell und # das Standardsymbol für eine Root-Shell?

Warum ist $ das Standardsymbol für eine Benutzer-Shell und # das Standardsymbol für eine Root-Shell?

Beim Ausführen einer Standard-Bash-Shell auf einem Server endet die PS1-Eingabeaufforderung für Nicht-Root-Benutzer standardmäßig mit einem $ und für Root-Benutzer mit einem #.

IE:

ubuntu@server:~$ sudo su
root@server:/home/ubuntu#

Warum ist das?

Antwort1

In der Vergangenheit wurde die ursprüngliche /bin/sh-Bourne-Shell $als normale Eingabeaufforderung und #als Eingabeaufforderung für den Root-Benutzer verwendet (und csh verwendete %). Dadurch konnte man ziemlich einfach feststellen, ob Sie als Superuser arbeiteten oder nicht.

#ist auch das Kommentarzeichen, sodass jeder, der Daten blind erneut eingibt, keine echten Befehle ausführen würde.

Modernere Shells (z. B. ksh, bash) führen diese Unterscheidung fort, $obwohl #sie weniger wichtig ist, wenn Sie kompliziertere Werte wie Benutzername, Hostname oder Verzeichnis festlegen können :-)

Antwort2

Tradition.

Der POSIX-Standard besagt(meine Hervorhebung):

PS1

Diese Variable wird für interaktive Eingabeaufforderungen verwendet. In der Vergangenheit hatte der „Superuser“ eine Eingabeaufforderung von #. Da Berechtigungen nicht monolithisch sein müssen, ist es schwierig zu definieren, welche Berechtigungen die alternative Eingabeaufforderung verursachen sollen.Ein Benutzer mit ausreichenden Fähigkeiten sollte jedoch durch eine alternative Eingabeaufforderung an diese Fähigkeiten erinnert werden.

Siehe auchdiese Antwortauf praktisch dieselbe Frage im SuperUser-Forum.

verwandte Informationen