Je veux simplement configurer une variable d'environnement à l'échelle du système, Java_HOME
pour tous les utilisateurs, y compris root utilisateur.
Exigences:
Pour Ubuntu, et éventuellement d'autres plates-formes * nix, ajoutez un nouveau script dans /etc/profile.d
nommé Java.sh
, tel que:
echo "export Java_HOME=/usr/lib/jvm/default-Java" > /etc/profile.d/Java.sh
Autres considérations exclues:
/etc/environment
- fonctionne mais est plus difficile à maintenir en utilisant d'autres outils (ou les gens le modifieront); et/etc/profile
- mêmes inconvénients que /etc/environment
Sur Debian/Ubuntu, ce serait / etc/environment
Je ne connais pas l'équivalent de Red Hat.
Je ne comprends pas pourquoi vous avez exclu/etc/profile. C'est le bon endroit.
Quelques-uns ont répondu en disant que /etc/environment
Est déprécié et/ou n'est plus utilisé dans Debian, et c'est (comme à la version 7) faux.
Le fichier est en fait lu par PAM - en particulier, pam_env(8)
, par défaut au drapeau envfile
. La page de manuel indique également cette valeur par défaut dans la section FICHIERS.
Les wikis cités (en particulier celui des paramètres régionaux) indiquent simplement que les variables d'environnement basées sur les paramètres régionaux sont désormais censées être dans /etc/profile
. Leur déclaration "(dans les anciennes versions de Debian, également/etc/environment)" est vague et se situe dans le contexte des locales.
Un rapide rappel à travers /etc/pam.d
Montre:
root@box:/etc/pam.d# grep pam_env.so *
atd:auth required pam_env.so
cron:session required pam_env.so
cron:session required pam_env.so envfile=/etc/default/locale
login:session required pam_env.so readenv=1
login:session required pam_env.so readenv=1 envfile=/etc/default/locale
sshd:auth required pam_env.so # [1]
sshd:auth required pam_env.so envfile=/etc/default/locale
su:session required pam_env.so readenv=1
su:session required pam_env.so readenv=1 envfile=/etc/default/locale
Ces lignes de configuration sont additives, et comme la première manque envfile
, elle est donc par défaut /etc/environment
.
Tout cela, bien sûr, dépend du binaire que vous utilisez (crond
, shells de connexion, etc.) sont compilés avec PAM.
Enfin, cela implique que d'autres systèmes utilisant PAM (par exemple RedHat) se comportent de la même manière, comme on peut le voir dans sa page de manuel respective.
Une note latérale: Jetez un œil à Modules Environment . Je l'utilise chaque fois que je dois proposer un environnement UNIX complexe, versionné, auto-extensible et concis à des dizaines ou des centaines d'utilisateurs. Il est principalement utilisé dans les environnements HPC multi-utilisateurs à grande échelle. Le simple fait de l'utiliser pour une variable particulière est certainement une ingénierie excessive, mais il fait un travail formidable une fois que vous avez besoin de plus de quelques progiciels et de leur environnement.
/etc/enviroment
n'est pas utilisé dans la dernière version stable de Debian. La recommandation est de créer votre propre *.sh
fichier dans /etc/profile.d/
pour ce porpuose comme le dit Sorin S. Voir https://wiki.debian.org/EnvironmentVariables
/etc/profile
devrait marcher. Je viens de tester pour être sûr, mettez export SOMETEST=1234
à /etc/profile
et après reconnexion echo $SOMETEST
m'a donné 1234
comme prévu. Aussi de gnome-terminal
Vous ne pouvez pas utiliser de fichiers ~ spécifiques dans ce cas. donc....
/etc/profile
serait le bon endroit dans ce cas. Les utilisateurs actuellement connectés doivent cependant obtenir une nouvelle session de connexion, mais cela ne devrait pas être un gros problème.
@ wk01: /etc/profile
n'est pas chargé par un shell non connecté par défaut. votre .bashrc
le charge probablement ...