Isso ocorre porque no segundo exemplo, a variável $HOME
é expandida antes que o shell execute o comando, então o que você está realmente executando é
sudo su - user2 -c "echo /home/user1"
como esse é o valor que a variável $HOME
tem neste momento.
(Eu também acho que a saída do segundo comando não é realmente $HOME=/home/user1
, mas apenas /home/user1
).
Você pode impedir a expansão de variáveis no primeiro shell se usar aspas simples:
$ sudo su - user2 -c 'echo $HOME'
/home/user2