Se env_reset estiver habilitado (o que é, por padrão), sudo limpará o ambiente e, em particular, fornecerá seu próprio PATH (consulte secure_path in /etc/sudoers ). Se env_reset estiver desabilitado, env_check e env_delete ainda serão aplicados, e PATH provavelmente será desabilitado. Você pode ver isso em ação, comparando a saída de
echo $PATH
e
sudo printenv PATH
Se você tiver um PATH personalizado, não será exibido na saída de sudo printenv .
O truque env funciona em torno da limpeza do ambiente:
sudo env "PATH=$PATH" command
solicita que sudo execute env "PATH=$PATH" command , com $PATH expandido pelo seu shell para conter seu% atualPATH; env , executando como root e, em seguida, armazena o valor fornecido de PATH em seu ambiente e executa command com esse ambiente.
Portanto, PATH não é especial, exceto no contexto de sudo , dependendo de sua configuração. Qualquer variável pode ser "especial" da mesma maneira, configurando sudo apropriadamente, e PATH pode ser "não-específico" também. Veja o sudo e sudoers manpages para detalhes.