Por que $ é o símbolo padrão para um shell de usuário e # o símbolo padrão para um shell raiz?

Por que $ é o símbolo padrão para um shell de usuário e # o símbolo padrão para um shell raiz?

Operando um shell bash padrão em um servidor, o prompt PS1 termina com $ para usuários não-root e # para root.

Ou seja:

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

Por que é isso?

Responder1

Historicamente, o shell Bourne /bin/sh original seria usado $como prompt normal e #para o prompt do usuário root (e csh usaria %). Isso tornou muito fácil saber se você estava executando como superusuário ou não.

#também é o caractere de comentário, portanto, qualquer pessoa que reinsira dados cegamente não executará nenhum comando real.

Shells mais modernos (por exemplo, ksh, bash) continuam esta distinção $e #embora seja menos importante quando você pode definir valores mais complicados, como nome de usuário, nome de host, diretório :-)

Responder2

Tradição.

O padrão POSIX diz(minha ênfase):

PS1

Esta variável é usada para prompts interativos. Historicamente, o "superusuário" recebeu um aviso de# . Como os privilégios não precisam ser monolíticos, é difícil definir quais privilégios devem causar o prompt alternativo.No entanto, um usuário suficientemente poderoso deve ser lembrado desse poder por meio de um prompt alternativo.

Veja tambémesta respostapara praticamente a mesma pergunta no fórum SuperUser.

informação relacionada