-
A expansão da variável é executada pelo seu shell interativo. Você está executando o comando
sudo
com os argumentosecho
etim
. Se você quiser que a expansão aconteça no shell chamado porsudo
, diga para executar um shell e passar a stringecho $ME
para esse shell:sudo sh -c 'echo $ME'
sudo
remove a maioria das variáveis do ambiente, porque elas podem ser um risco de segurança em algumas circunstâncias. Veja o manual e a configuração da sua máquina para detalhes. Com configurações típicas, a variávelME
seria removida do ambiente, portanto,sudo sh -c 'echo $ME'
não imprimia nada. -
O ambiente de um processo é uma cópia de seu pai, a menos que o pai tenha decidido alterá-lo. (Mais precisamente, o ambiente é passado para
execve
; a maioria dos programas simplesmente passa pelo que quer que seja tinha.) Sudo é um dos programas que decide mudar o ambiente. -
Se você executar
sudo su
, isso executará um shell (porque você não passou um comando parasu
). O pai desse processo de shell é o processo que chamousudo
, ou seja, o shell em que você executou o comandosudo su
.