J'ai un utilisateur, dites user1 , qui a des modifications sur son .bash_profile , l'un d'eux changeant le PATH , par exemple :export PATH=/some/place:$PATH . Ce changement fonctionne bien si je me connecte en tant que user1 ou faites un su - user1 .
Mais si j'essaie d'exécuter une commande via su en tant que root , par exemple :
su -c test.sh oracle
(le test contient echo $PATH )
Il ne semble pas avoir le PATH modifié (ou le PATH de la racine , d'ailleurs). J'ai aussi essayé de copier .bash_profile vers .profile , en vain.
Pourquoi cela se produit-il ?
Réponse acceptée :
Utilisation de su sans -l ou - lance bash en tant que shell interactif, mais sans connexion, qui ne lit aucun des fichiers que vous avez spécifiés. Utilisez le -l ou - ou placez la configuration appropriée dans /root/.bashrc .
Résumé rapide des fichiers de configuration :
- Interface de connexion (
-l/--login) lit/etc/profiled'abord, puis le premier qu'il trouve :~/.bash_profile,~/.bash_login, et~/.profile. - Shell interactif mais sans connexion (
-i) lit/etc/bash.bashrcet~/.bashrc, dans cet ordre (sauf si le--rcfileest utilisée et lui dit de chercher ailleurs). - Des coques non interactives, par ex. démarré depuis un autre programme sans utiliser le
-lou-iflags, lit le fichier spécifié dans leBASH_ENVvariable d'environnement. - Lorsqu'il est exécuté en tant que
shen tant que shell de connexion, il lira/etc/profileet~/.profile, dans cet ordre. - Lorsqu'il est exécuté en tant que
shen tant que non-login interactif, il lit le fichier spécifié dansENV.