¿Por qué $ es el símbolo predeterminado para un shell de usuario y # el símbolo predeterminado para un shell raíz?

¿Por qué $ es el símbolo predeterminado para un shell de usuario y # el símbolo predeterminado para un shell raíz?

Al operar un shell bash estándar en un servidor, el indicador de PS1 termina de manera predeterminada en $ para usuarios no root y # para root.

ES DECIR:

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

¿Por qué es esto?

Respuesta1

Históricamente, el shell Bourne /bin/sh original se usaría $como indicador normal y #para el indicador del usuario root (y csh usaría %). Esto hizo que fuera bastante fácil saber si estaba ejecutando como superusuario o no.

#También es el carácter de comentario, por lo que cualquiera que vuelva a ingresar datos a ciegas no ejecutará ningún comando real.

Los shells más modernos (por ejemplo, ksh, bash) continúan con esta distinción $y, #aunque es menos importante, cuando puedes establecer valores más complicados como el nombre de usuario, el nombre de host y el directorio :-)

Respuesta2

Tradición.

El estándar POSIX dice(énfasis mío):

PS1

Esta variable se utiliza para indicaciones interactivas. Históricamente, el "superusuario" ha recibido un mensaje de #. Dado que no es necesario que los privilegios sean monolíticos, es difícil definir qué privilegios deben provocar el mensaje alternativo.Sin embargo, a un usuario suficientemente poderoso se le debe recordar ese poder mediante un mensaje alternativo.

Ver tambiénesta respuestaa prácticamente la misma pregunta en el foro SuperUser.

información relacionada