bash -su e $HOME

bash -su e $HOME

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 $HOMEtem neste ponto.

(Eu também acho que a saída do segundo comando não é realmente, $HOME=/home/user1mas 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

informação relacionada