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
PATHno ambiente do comandowhich:sudo PATH="$PATH" which pip3Qualquer
PATHdesejado também pode ser definido. -
Mantenha o ambiente atual enquanto executa
sudoem:sudo -E which pip3 -
Desative o valor
secure_pathcolocando um#na frente ou remova a linha para manter o atualPATH:# Defaults secure_path="....."Em vez disso, você também pode modificar o
secure_pathpara adicionar apenas/usr/.../anaconda3/bina ele, no início . -
Adicione
PATHà diretivaenv_keeppara manter oPATHno ambientesudofornecido:Defaults env_keep += "PATH"