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


10

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

IE:

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

Por que é isso?


Historicamente ou mais diretamente?
Jeff Schaller

Respostas:


16

Historicamente, o shell Bourne / bin / sh original usaria $como o prompt normal e #para o prompt do usuário root (e o 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 digitar cegamente os dados não executará nenhum comando real.

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


Você pode dar um exemplo de como #o caractere de comentário evita que alguém execute comandos reais se estiver reinserindo dados cegamente?
John Gowers

6
O que acontece se você cortar e colar a linha completa # reboot- responda ... nada, porque #é um comentário.
Stephen Harris

9

Tradição.

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

PS1

Essa variável é usada para prompts interativos. Historicamente, o "superusuário" recebeu um prompt 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 ter um prompt alternativo.

Veja também esta resposta para praticamente a mesma pergunta no fórum SuperUser.


Para adicionar, isso pode ser encontrado em Racional> C. Racional para Shell e Utilitários> 2. Linguagem de Comando do Shell; Eu só tinha que encontrar uma referência a ele para outra coisa :)
forquare

1
@forquare Obrigado. Adicionei um link adequado agora.
Kusalananda
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.