Quand j'exécute
which pip3
il pointe vers
/usr/.../anaconda3/bin/pip3
Cependant, quand je cours
Sudo which pip3
le résultat est
/usr/bin/pip3
D'où vient ce problème et comment y parvenir Sudo pip
pointe également vers /usr/.../anaconda3/bin/pip3
?
Sudo
nettoie l'environnement avant d'exécuter une commande. Ainsi, si la valeur de la directive secure_path
est définie, elle sera utilisée en tant que PATH
pour les commandes Sudo
et non pour le nom actuel PATH
.
Dans mon système:
% Sudo grep -E 'secure_path' /etc/sudoers
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Donc j'ai:
% 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
Que pouvez-vous faire pour conserver votre chemin actuel ou pour ajouter /usr/.../anaconda3/bin
à Sudo
's PATH
:
Passez PATH
dans l'environnement de la commande which
:
Sudo PATH="$PATH" which pip3
Tout PATH
souhaité peut également être défini.
Conservez l'environnement actuel pendant l'exécution de Sudo
en:
Sudo -E which pip3
Désactivez la valeur secure_path
en plaçant un #
devant ou supprimez la ligne pour conserver le PATH
actuel:
# Defaults secure_path="....."
Au lieu de cela, vous pouvez également modifier le secure_path
pour simplement y ajouter /usr/.../anaconda3/bin
, au début.
Ajoutez PATH
à la directive env_keep
pour conserver le PATH
dans l’environnement fourni Sudo
:
Defaults env_keep += "PATH"