-
A expansão da variável é executada pelo seu shell interativo. Você está executando o comando
sudocom os argumentosechoetim. Se você quiser que a expansão aconteça no shell chamado porsudo, diga para executar um shell e passar a stringecho $MEpara esse shell:sudo sh -c 'echo $ME'sudoremove 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ávelMEseria 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.