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 $HOME
se 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 $HOME
que tiene la variable en este punto.
(También supongo que el resultado del segundo comando no es realmente $HOME=/home/user1
sino 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