bash - su y $HOME

bash - su y $HOME

Supongamos que tenemos dos usuarios: usuario1 (un administrador) y usuario2 (un usuario estándar)

  • Iniciar sesión como usuario1
  • Correr

    sudo su - user2 -c "env"
    
  • El resultado muestra $HOME=/home/user2

  • Correr

    sudo su - user2 -c "echo $HOME" 
    
  • El resultado muestra $HOME=/home/usuario1

¿Porqué es eso?

Respuesta1

Esto se debe a que en el segundo ejemplo, la variable $HOMEse expande antes de que el shell ejecute el comando, por lo que lo que realmente estás ejecutando es

sudo su - user2 -c "echo /home/user1" 

ya que ese es el valor $HOMEque tiene la variable en este punto.

(También supongo que el resultado del segundo comando no es realmente $HOME=/home/user1sino simplemente /home/user1).

Podrías evitar la expansión de variables en el primer shell si usas comillas simples:

$ sudo su - user2 -c 'echo $HOME' 
/home/user2

información relacionada