Mise à jour:
La définition de variables d’environnement globales doit toujours être effectuée dans /etc/environment
, mais comme vous l’avez indiqué, l’utilisation sudo -s
de ces variables a pour effet de les "supprimer".
La raison en est sudo
une politique de réinitialisation de l'environnement et de définition d'un chemin sécurisé . Il est activé par défaut:
/etc/sudoers:
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Ainsi, tout ce qui est défini dans le /etc/environment
pour le chemin est remplacé par sudo
.
La page de manuel pour les sudoers
états:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
variables. Any variables in the caller's environment
that match the env_keep and env_check lists are then
added. The default contents of the env_keep and
env_check lists are displayed when sudo is run by root
with the -V option. If the secure_path option is set,
its value will be used for the PATH environment
variable. This flag is on by default.
Pour contourner le problème, vous pouvez utiliser sudo su
un shell doté des privilèges root, mais contenant le bon PATH.
Réponse originale
Vous devriez le mettre en /etc/environment
.
Essayer sudo YOUR_TEXT_EDITOR /etc/environment
(assurez-vous de créer d'abord une sauvegarde).
Pour plus d'informations: EnvironmentVariables
Variables d'environnement à l'échelle du système
Les paramètres de variable d’environnement qui affectent le système dans son ensemble (et non pas uniquement un utilisateur particulier) ne doivent pas figurer dans les nombreux scripts système exécutés lors du chargement de la session système ou de la session de bureau.
/etc/environment
- Ce fichier est spécifiquement conçu pour les paramètres de variable d'environnement à l'échelle du système. Ce n'est pas un fichier de script, mais plutôt une expression d'affectation, une par ligne. Plus précisément, ce fichier stocke les paramètres régionaux et de chemin d'accès à l'échelle du système.
Non recommandé:
/etc/profile
- Ce fichier est exécuté chaque fois qu'un shell de connexion bash est entré (par exemple, lors de la connexion à partir de la console ou via ssh), ainsi que par le DisplayManager lors du chargement de la session de bureau. C’est probablement le fichier auquel vous allez faire référence lorsque vous posez des questions à des administrateurs système UNIX expérimentés sur les variables d’environnement. Dans Ubuntu, toutefois, ce fichier n’appelle que très peu le fichier /etc/bash.bashrc.
/etc/bash.bashrc
- Ceci est la version globale du fichier ~ / .bashrc. Ubuntu est configuré par défaut pour exécuter ce fichier chaque fois qu'un utilisateur entre dans un shell ou dans l'environnement de bureau.
visudo
(nécessite des autorisations root) pour modifier les paramètres du chemin sécurisé. ce n'est pas une pratique recommandée. C'est juste pour l'éducation.sudo -i
simulera une connexion (de manière similaire àsudo su -
) et vous donnera donc ces variables d’environnement.la source