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

10

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

ES DECIR:

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

¿Por qué es esto?

Jack
fuente
Históricamente o más directamente?
Jeff Schaller

Respuestas:

16

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

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

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

Stephen Harris
fuente
¿Puede dar un ejemplo de cómo #ser el personaje del comentario impide que alguien ejecute comandos reales si está volviendo a ingresar datos ciegamente?
John Gowers
66
¿Qué sucede si corta y pega la línea completa # reboot? Responda ... nada, porque #es un comentario.
Stephen Harris
9

Tradicion.

El estándar POSIX dice (mi énfasis):

PS1

Esta variable se utiliza para solicitudes interactivas. Históricamente, el "superusuario" ha tenido un mensaje de '#'. Dado que no se requiere que los privilegios sean monolíticos, es difícil definir qué privilegios deberían causar la solicitud alternativa. Sin embargo, un usuario suficientemente poderoso debe recordar ese poder al tener un mensaje alternativo.

Vea también esta respuesta a prácticamente la misma pregunta en el foro SuperUser.

Kusalananda
fuente
Para agregar, esto se puede encontrar en Justificación> C. Justificación de Shell y Utilidades> 2. Lenguaje de comandos de Shell; Solo tenía que encontrar una referencia para algo más :)
forquare
1
@forquare Gracias. He agregado un enlace apropiado ahora.
Kusalananda