Perché $ è il simbolo predefinito per una shell utente e # il simbolo predefinito per una shell root?


10

Operando su una shell bash standard su un server, il prompt di PS1 ha come impostazione predefinita la fine in $ per utenti non root e # per root.

IE:

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

Perchè è questo?


Storicamente o più direttamente?
Jeff Schaller

Risposte:


16

Storicamente la shell Bourne originale / bin / sh userebbe $come prompt normale e #per il prompt dell'utente root (e userebbe csh %). Questo ha reso abbastanza facile capire se stavi funzionando come superutente o no.

# è anche il carattere di commento, quindi chiunque reinserisca ciecamente i dati non eseguirà alcun comando reale.

Shell più moderne (ad esempio ksh, bash) continuano questa distinzione di $e #sebbene sia meno importante quando è possibile impostare valori più complicati come nome utente, nome host, directory :-)


Puoi fare un esempio di come #essere il personaggio del commento impedisce a qualcuno di eseguire comandi reali se reinserisce ciecamente dati?
John Gowers,

6
Cosa succede se tagli la linea completa # reboot: rispondi ... niente, perché #è un commento.
Stephen Harris,

9

Tradizione.

Lo standard POSIX dice (la mia enfasi):

PS1

Questa variabile viene utilizzata per i prompt interattivi. Storicamente, il "superutente" ha richiesto "#". Poiché non è necessario che i privilegi siano monolitici, è difficile definire quali privilegi debbano causare il prompt alternativo. Tuttavia, a un utente sufficientemente potente dovrebbe essere ricordato quel potere con un prompt alternativo.

Vedi anche questa risposta praticamente alla stessa domanda sul forum SuperUser.


Per aggiungere, questo può essere trovato sotto Rationale> C. Rationale for Shell & Utilities> 2. Shell Command Language; Dovevo solo trovare un riferimento ad esso per qualcos'altro :)
forquare il

1
@forquare Grazie. Ho aggiunto un link corretto ora.
Kusalananda
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.