¿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?


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 :-)


¿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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.