Ya vimos en otra entrada (/usr/sbin y /sbin no están en $PATH al hacer su) los problemas que nos podía generar hacer login contra un usuario usando únicamente su. Básicamente, la diferencia es que si hacemos su <usuario> a secas «heredaremos» las variables de entorno y lo especificado en los ficheros de inicialización del usuario origen en lugar de recibir los del nuevo. Vamos a ver un ejemplo:
$ whoami alex $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/alex/bin $ su Contraseña: # whoami root # echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/alex/bin
En el anterior ejemplo, pese a convertirme en root, seguía siendo aplicado el $PATH del usuario anterior (alex). En cambio, si ejecutamos su seguido de un guión y el usuario (para ser root no hace falta especificar el usuario) sí que se leerán los ficheros de inicialización de root y por consiguiente se definirá la variable $PATH correctamente:
$ whoami alex $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/alex/bin $ su - Contraseña: # whoami root # echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
En la segunda parte has puesto otra vez el «su» sin guión, cambialo por «su -«
Corregido, gracias!
Bien explicado, gracias!!!