sudo
higieniza o ambiente antes de executar qualquer comando. Ao fazer isso, se o valor da diretiva secure_path
for definido, ele será usado como PATH
para os comandos sudo
, não o atual PATH
.
No meu sistema:
% sudo grep -E 'secure_path' /etc/sudoers
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Então eu tenho:
% echo $PATH
/home/foobar/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
% sudo bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
O que você pode fazer para manter seu caminho atual ou adicionar /usr/.../anaconda3/bin
a sudo
' PATH
:
-
Passe
PATH
no ambiente do comandowhich
:sudo PATH="$PATH" which pip3
Qualquer
PATH
desejado também pode ser definido. -
Mantenha o ambiente atual enquanto executa
sudo
em:sudo -E which pip3
-
Desative o valor
secure_path
colocando um#
na frente ou remova a linha para manter o atualPATH
:# Defaults secure_path="....."
Em vez disso, você também pode modificar o
secure_path
para adicionar apenas/usr/.../anaconda3/bin
a ele, no início . -
Adicione
PATH
à diretivaenv_keep
para manter oPATH
no ambientesudo
fornecido:Defaults env_keep += "PATH"