Ich habe einen Benutzer, sagen wir user1
, die Änderungen an seiner hat .bash_profile
, einer von ihnen ändert sich die PATH
, zum Beispiel: export PATH=/some/place:$PATH
. Diese Änderung funktioniert einwandfrei, wenn ich mich als anmelde user1
oder a su - user1
.
Aber wenn ich versuche, einen Befehl über su
as auszuführen root
, zB:
su -c test.sh oracle
(Test enthält echo $PATH
)
Es scheint nicht die modifizierte PATH
(oder root PATH
, für diese Angelegenheit) zu haben. Ich habe auch versucht , das Kopieren .bash_profile
zu .profile
, ohne Erfolg.
Warum passiert dies?
rhel
environment-variables
su
NullUser
quelle
quelle
su
Antworten:
Die Verwendung
su
ohne-l
oder-
startetbash
als interaktive Shell ohne Anmeldung, die keine der von Ihnen angegebenen Dateien liest. Verwenden Sie die-l
oder-
Option oder setzen die entsprechende Konfiguration in/root/.bashrc
.Schnelle Zusammenfassung der Konfigurationsdateien:
-l
/--login
) liest/etc/profile
zuerst, und dann die erste findet es aus:~/.bash_profile
,~/.bash_login
, und~/.profile
.-i
) liest/etc/bash.bashrc
und~/.bashrc
in dieser Reihenfolge (sofern nicht die--rcfile
Option verwendet wird und fordert sie auf, anderswo nachzuschauen).-l
oder zu verwenden-i
, lesen die in derBASH_ENV
Umgebungsvariablen angegebene Datei .sh
Login-Shell ausgeführt wird, liest es/etc/profile
und~/.profile
in dieser Reihenfolge.sh
interaktives Nicht-Login ausgeführt wird, liest es die in angegebene DateiENV
.quelle
Bash verhält sich unterschiedlich, je nachdem, ob es sich um eine Login-Shell handelt, dh die erste Shell, die ausgeführt wird, wenn Sie sich bei einem System anmelden. Es wird nur gelesen,
.bash_profile
wenn es sich um eine Anmeldeshell handelt. Wenn SiePATH
stattdessen den Code -changing eingeben.bashrc
, wird dieser für alle interaktiven Bash-Shells ausgeführt, nicht nur für Anmeldeshells.quelle
Wenn Sie die Gnome-Umgebung in Scientific Linux 6 (oder vermutlich RHEL 6) verwenden, starten Sie ein Terminal. Gehen Sie zu
Edit
->Profile Preferences
->"Title and Command"
Registerkarte. Stellen Sie sicher, dass das Kontrollkästchen "Befehl als Anmeldeshell ausführen" aktiviert ist. Ich habe festgestellt, dass die Gnome-Terminalanwendung my ignoriert,.bash_profile
sofern ich dies nicht tue.quelle