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/profile
d'abord, puis le premier qu'il trouve :~/.bash_profile
,~/.bash_login
, et~/.profile
. - Shell interactif mais sans connexion (
-i
) lit/etc/bash.bashrc
et~/.bashrc
, dans cet ordre (sauf si le--rcfile
est utilisée et lui dit de chercher ailleurs). - Des coques non interactives, par ex. démarré depuis un autre programme sans utiliser le
-l
ou-i
flags, lit le fichier spécifié dans leBASH_ENV
variable d'environnement. - Lorsqu'il est exécuté en tant que
sh
en tant que shell de connexion, il lira/etc/profile
et~/.profile
, dans cet ordre. - Lorsqu'il est exécuté en tant que
sh
en tant que non-login interactif, il lit le fichier spécifié dansENV
.