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_pathoption est définie, sa valeur sera utilisée pour la PATHvariable 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 PATHvariable 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_groupoption 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 visudoet 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_pathoptions).
Ou afin de passer PATHtemporaire 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 sudoconserver $PATH?
Une autre raison pour laquelle l’environnement pourrait être différent sudo, c’est parce que l’ env_resetoption pourrait être activée dans votre sudoersfichier. Cela provoque l'exécution de commandes avec un nouvel environnement minimal.
Vous pouvez donc utiliser l' env_keepoption (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"