Suponha que temos dois usuários: usuário1 (um administrador) e usuário2 (um usuário padrão)
- Faça login como usuário1
Correr
sudo su - user2 -c "env"
O resultado mostra $HOME=/home/user2
Correr
sudo su - user2 -c "echo $HOME"
O resultado mostra $HOME=/home/user1
Por que é que?
Responder1
Isso ocorre porque no segundo exemplo, a variável $HOME
é expandida antes do shell executar o comando, então o que você está realmente executando é
sudo su - user2 -c "echo /home/user1"
pois esse é o valor que a variável $HOME
tem neste ponto.
(Eu também acho que a saída do segundo comando não é realmente, $HOME=/home/user1
mas apenas /home/user1
).
Você poderia evitar a expansão de variáveis no primeiro shell se usar aspas simples:
$ sudo su - user2 -c 'echo $HOME'
/home/user2