J'ai un utilisateur, par exemple user1
, qui a des modifications à son .bash_profile
, l' un d'entre eux de changer le PATH
, par exemple: export PATH=/some/place:$PATH
. Ce changement fonctionne bien si je me connecte en tant user1
que su - user1
.
Mais si j'essaie d'exécuter une commande via su
as root
, par exemple:
su -c test.sh oracle
(test contient echo $PATH
)
Il ne semble pas avoir le modifié PATH
(ou la racine PATH
, d'ailleurs). J'ai aussi essayé de copier .bash_profile
à .profile
, en vain.
Pourquoi cela arrive-t-il?
rhel
environment-variables
su
NullUser
la source
la source
su
Réponses:
Utiliser
su
sans-l
ou-
commencebash
comme un shell interactif, mais sans connexion, qui ne lit aucun des fichiers spécifiés. Utilisez la-l
ou-
option ou mettre la configuration pertinente en/root/.bashrc
.Résumé rapide des fichiers de configuration:
-l
/--login
lit) d'/etc/profile
abord, puis le premier qu'il trouve de:~/.bash_profile
,~/.bash_login
et~/.profile
.-i
) interactif mais non connecté se lit/etc/bash.bashrc
et~/.bashrc
, dans cet ordre (à moins que l’--rcfile
option ne soit utilisée et lui dit de regarder ailleurs).-l
ou-i
, lisent le fichier spécifié dans laBASH_ENV
variable d'environnement.sh
que shell de connexion, il se lit/etc/profile
et~/.profile
, dans cet ordre.sh
que non-connexion interactive, il lit le fichier spécifié dansENV
.la source
Bash se comporte différemment selon qu’il croit qu’il s’agit d’un shell de connexion, c’est-à-dire du premier shell exécuté lorsque vous vous connectez à un système. Il ne lit que
.bash_profile
s'il s'agit d'un shell de connexion. Si vous insérez plutôt lePATH
code -changing.bashrc
, il sera exécuté pour tous les shells interactifs bash, pas seulement pour les shells de connexion.la source
Si vous utilisez l'environnement Gnome dans Scientific Linux 6 (ou vraisemblablement RHEL 6), démarrez un terminal. Allez à
Edit
->Profile Preferences
->"Title and Command"
onglet. Assurez-vous que la case "Exécuter la commande en tant que shell de connexion" est cochée. J'ai trouvé que l'application de terminal Gnome ignore mon.bash_profile
sauf si je le fais.la source