bash - su e $ HOME

0

Suponha que temos dois usuários: user1 (um administrador) e user2 (um usuário padrão)

  • Login como usuário1
  • Executar

    sudo su - user2 -c "env"
    
  • O resultado mostra $ HOME = / home / user2

  • Executar

    sudo su - user2 -c "echo $HOME" 
    
  • O resultado mostra $ HOME = / home / user1

Por que isso?

    
por thn 09.04.2017 / 11:10

1 resposta

4

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
    
por 09.04.2017 / 11:17

Tags