J'ai créé un fichier nommé x.sh
dans le répertoire /etc/profile.d/
afin qu'il soit accessible à tous les utilisateurs. Je pensais que lorsque je changerais l'utilisateur actuel dans le terminal (de l'utilisateur connecté) à l'aide de la commande Sudo su other_user
, les variables que j'ai définies dans le fichier x.sh
devraient être accessibles, mais elles ne le sont pas. Comment définir les variables pour qu'elles soient accessibles comme je le souhaite?
/etc/profile
(et donc /etc/profile.d
) est lu pour les shells de connexion. Sudo su other_user
n'exécute pas de shell de connexion. C'est une mauvaise pratique, cela laisse l'environnement contaminé par des variables de l'utilisateur d'origine . Vous devriez faire l'une de ces commandes à la place:
Sudo -iu other_user
Sudo su - other_user
Ces deux systèmes chargent /etc/profile
parce qu'ils démarrent des shells de connexion et qu'ils démarrent tous deux dans des environnements relativement propres.
Idéalement, les variables doivent être définies dans /etc/environment
si possible. Ce fichier doit être lu par su
, de sorte que les variables qui y figurent seront disponibles, qu'un shell de connexion soit démarré ou non. Cependant, ce fichier ne prend pas en charge la syntaxe Shell. Par conséquent, si vous avez besoin d'un code Shell complexe pour définir vos variables, vous ne pouvez pas l'utiliser.
Après comment définir de manière permanente les variables d'environnement · U & Lbash
va se charger
/etc/profile
c'est donc le bon endroit pour ajouter des variables efficaces pour tous les utilisateurs.