Proteções
sudo
tem proteções incorporadas que você está percebendo quando executa vários desses comandos. Essas proteções estão fazendo várias coisas, como impor um $PATH
seguro.
Do arquivo /etc/sudoers
:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Isso é o que está sendo exibido quando você executa seus comandos sudo -c ....
. Você pode desativar esse comportamento com a opção -E
para sudo
.
NOTA: Para algumas configurações, a opção -E
não funcionará. Para "remediar", você pode usar sudo env "PATH=$PATH" bash
. Isso também levará seu atual $PATH
para o seu ambiente sudo
.
interativo vs. login
Quando você executou este comando:
$ sudo bash
Você executou um shell bash
interativo versus um login bash
shell. Isso tem a ver com como bash
origina seus arquivos de configuração.
-
interativo, também conhecido como
bash
oubash -i
, fontes$HOME/.bashrc
-
login, também conhecido como
bash -l
, fontes$HOME/.bash_profile
Então, por que o -E
não funciona?
A resposta de TylerRick a essa pergunta SO (sudo muda PATH - por quê?) abrange muitas das razões pelas quais . O principal é que ele é tipicamente codificado quando sudo
é compilado, como é o caso do Ubuntu, resultando nesses switches como inúteis. Houve longos problemas em aberto no Launchpad em relação a eles e eles nunca foram corrigidos, deixando-nos com a percepção de que a Canonical acha melhor deixar esse comportamento como padrão.