Na maioria das configurações, o sudo remove a maioria das variáveis de ambiente. Você pode ver a configuração do sudo executando sudo -V
como root (então sudo sudo -V
como um usuário com permissões sudo).
No Ubuntu, as variáveis são removidas, exceto em uma lista pequena, e EDITOR
e VISUAL
não estão na lista para serem preservadas. Portanto, quando você executar sudo somecommand
, suas preferências de editor por usuário não serão aplicadas ao executar somecommand
.
Quando você executa sudo -E
, o arquivo é copiado para um local temporário, o sudo executa o editor sem privilégios adicionais e, finalmente, o arquivo temporário é movido para o local final se o editor retornar um status de sucesso. Como o editor é executado sem privilégios adicionais, o sudo não tira o ambiente.
Você deve usar sudo -E
sempre que possível, pois isso permite que você execute seu editor favorito sem preocupações sobre a execução de programas com privilégios elevados. Quando isso não for possível (por exemplo, para executar crontab -e
, você pode escolher seu editor definindo sua preferência novamente dentro do comando executado pelo sudo:
sudo env VISUAL=vim crontab -e