martes, 1 de marzo de 2011

Diferencia entre su y su -

Cuando utilizamos una distro como Debian/Ubuntu o Fedora/CentOS por largo tiempo, usualmente tendemos a olvidarnos de su como tal dada la forma tan automática en que lo usamos. Muchos de ustedes se habrán preguntado por qué algunos usan su y otros su -. ¿Cuál es la diferencia?

Viendo las páginas man podemos encontrar que “-” o “-l” o la opción “--login” provee un entorno similar al que el usuario experimenta cuando hace un login directo.

Esto hace referencia a los login shells. Estos es el shell lanzado cuando un usuario hace login. Lo que diferencia un login shell de un shel regular, a pesar de que se ven exactamente iguales en el prompt, son los diferentes conjuntos de scripts/ficheros de configuración que son ejecutados antes de que el prompt salga en el terminal.

Tomando como ejemplo a bash, cuando ejecutamos un comando regular en bash, el fichero ejecutado es  ~/.bashrc el cual llama a /etc/bashrc. Y cuando es un login shell (bash -l), el orden de ejecución es /etc/profile, ~/.bash_profile el cual llama otros ficheros internamente.

El punto clave es que esa diferencia de configuración en estos ficheros lleva a diferentes conductas del shell. Una de las grandes diferencias lo constituye la inicialización de la variable PATH en ~/.bash_profile (default behaviour). Entonces, hasta que habras un login shell, no tendrás la variable  PATH esperada.

Ejemplo 1

[shredder12]$ su
password:

[root]# fdisk -l
fdisk: command not found

[root]# echo $PATH
/usr/bin/:/bin:/usr/local/bin/:

Ejemplo 2

[shredder12]$ su -
password:

[root]# fdisk -l
“trabaja perfectamente”

[root]# echo $PATH
/usr/bin/:/usr/sbin:/bin/:sbin:/usr/local/bin:/usr/local/sbin:

Como podemos ver la variable de entorno PATH no fue configurada correctamente. los directorios */sbin no fueron incluidos en el primer ejemplo. Esto se debe a que hereda la variable PATH del usuario anterior (shredder12). Finalmente, tenemos un shell de root que no se comporta como usuario root.


Fuente: Linuxers

No hay comentarios:

Publicar un comentario