Warum ist $ das Standardsymbol für eine Benutzer-Shell und # das Standardsymbol für eine Root-Shell?
10
Wenn Sie eine Standard-Bash-Shell auf einem Server betreiben, endet die PS1-Eingabeaufforderung standardmäßig mit einem $ für Nicht-Root-Benutzer und einem # für Root.
IE:
ubuntu@server:~$ sudo su
root@server:/home/ubuntu#
In der Vergangenheit wurde die ursprüngliche Bourne-Shell / bin / sh $als normale Eingabeaufforderung und #für die Eingabeaufforderung des Root-Benutzers verwendet (und csh wurde verwendet %). Dies machte es ziemlich einfach zu erkennen, ob Sie als Superuser ausgeführt wurden oder nicht.
# ist auch das Kommentarzeichen, sodass jeder, der blind Daten erneut eingibt, keine echten Befehle ausführen würde.
Moderne Shells (z. B. ksh, bash) setzen diese Unterscheidung fort $und #obwohl es weniger wichtig ist, wenn Sie kompliziertere Werte wie Benutzername, Hostname, Verzeichnis festlegen können :-)
Diese Variable wird für interaktive Eingabeaufforderungen verwendet. In der Vergangenheit hatte der "Superuser" die Eingabeaufforderung "#". Da Berechtigungen nicht monolithisch sein müssen, ist es schwierig zu definieren, welche Berechtigungen die alternative Eingabeaufforderung verursachen sollen. Ein ausreichend leistungsfähiger Benutzer sollte jedoch durch eine alternative Eingabeaufforderung an diese Leistung erinnert werden.
Siehe auch diese Antwort auf praktisch dieselbe Frage im SuperUser-Forum.
Weitere Informationen finden Sie unter Begründung> C. Begründung für Shell & Dienstprogramme> 2. Shell-Befehlssprache; Ich musste nur einen Verweis darauf für etwas anderes finden :)
forquare
1
@forquare Danke. Ich habe jetzt einen richtigen Link hinzugefügt.
Antworten:
In der Vergangenheit wurde die ursprüngliche Bourne-Shell / bin / sh
$
als normale Eingabeaufforderung und#
für die Eingabeaufforderung des Root-Benutzers verwendet (und csh wurde verwendet%
). Dies machte es ziemlich einfach zu erkennen, ob Sie als Superuser ausgeführt wurden oder nicht.#
ist auch das Kommentarzeichen, sodass jeder, der blind Daten erneut eingibt, keine echten Befehle ausführen würde.Moderne Shells (z. B. ksh, bash) setzen diese Unterscheidung fort
$
und#
obwohl es weniger wichtig ist, wenn Sie kompliziertere Werte wie Benutzername, Hostname, Verzeichnis festlegen können :-)quelle
#
das Kommentieren verhindert, dass jemand echte Befehle ausführt, wenn er blind Daten erneut eingibt?# reboot
- antworten Sie ... nichts, denn das#
ist ein Kommentar.Tradition.
Der POSIX-Standard sagt (meine Betonung):
Siehe auch diese Antwort auf praktisch dieselbe Frage im SuperUser-Forum.
quelle