Vous pouvez vérifier pourquoi (c'est différent) en exécutant sudo sudo -V
.
Par exemple sous Linux, lancez:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Remarque: sous Mac OS / BSD, il suffit d' exécuter: sudo sudo -V
.
La liste ci-dessus est restreinte en raison du plug-in de politique de sécurité par défaut dans certaines distributions Linux.
Ceci est expliqué plus en détail dans man sudoers
:
Si l' secure_path
option est définie, sa valeur sera utilisée pour la PATH
variable d'environnement.
secure_path
- Chemin utilisé pour chaque commande exécutée à partir de sudo. Si vous ne faites pas confiance aux personnes qui exécutent sudo pour avoir une PATH
variable d’environnement saine , vous pouvez l’utiliser.
Une autre utilisation est si vous souhaitez que le “chemin racine” soit séparé du “chemin utilisateur”. Les utilisateurs du groupe spécifié par l' exempt_group
option ne sont pas affectés par secure_path
. Cette option n'est pas définie par défaut.
Si c'est le cas, vous pouvez modifier cela en exécutant sudo visudo
et en modifiant le fichier de configuration et en modifiant votre secure_path
(ajout d'un chemin supplémentaire séparé par :
) ou en ajoutant votre utilisateur dans exempt_group
(afin que vous ne soyez pas affecté par les secure_path
options).
Ou afin de passer PATH
temporaire de l'utilisateur , vous pouvez exécuter:
sudo env PATH="$PATH" my_command
et vous pouvez vérifier cela en:
sudo env PATH="$PATH" env | grep ^PATH
Voir aussi: Comment faire sudo
conserver $PATH
?
Une autre raison pour laquelle l’environnement pourrait être différent sudo
, c’est parce que l’ env_reset
option pourrait être activée dans votre sudoers
fichier. Cela provoque l'exécution de commandes avec un nouvel environnement minimal.
Vous pouvez donc utiliser l' env_keep
option (non recommandée pour des raisons de sécurité ) pour préserver les variables d'environnement de votre utilisateur:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"