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

7

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

IE:

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

Por que isso acontece?

    
por Jack 24.06.2016 / 00:02

2 respostas

11

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

# também é o caractere de comentário, por isso, qualquer pessoa cegamente reinserindo dados não executaria comandos reais.

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

    
por 24.06.2016 / 00:16
7

Tradição.

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

PS1

This variable is used for interactive prompts. Historically, the "superuser" has had a prompt of '#'. Since privileges are not required to be monolithic, it is difficult to define which privileges should cause the alternate prompt. However, a sufficiently powerful user should be reminded of that power by having an alternate prompt.

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

    
por 24.06.2016 / 00:19