GNU/Linux >> LINUX-Kenntnisse >  >> Linux

.bash_profile nicht bezogen, wenn Su ausgeführt wird?

Ich habe einen Benutzer, sagen wir user1 , das Änderungen an seinem .bash_profile enthält , einer von ihnen ändert den PATH , z. B.:export PATH=/some/place:$PATH . Diese Änderung funktioniert einwandfrei, wenn ich mich als user1 anmelde oder machen Sie einen su - user1 .

Aber wenn ich versuche, einen Befehl über su auszuführen als root , z. B.:

su -c test.sh oracle

(Test enthält echo $PATH )

Es scheint nicht den modifizierten PATH zu haben (oder PATH von root , übrigens). Ich habe auch versucht, .bash_profile zu kopieren zu .profile , vergeblich.

Warum passiert das?

Akzeptierte Antwort:

Mit su ohne -l oder - startet bash als interaktive Shell ohne Anmeldung, die aus keiner der von Ihnen angegebenen Dateien liest. Verwenden Sie das -l oder - Option oder legen Sie die relevante Konfiguration in /root/.bashrc ab .

Kurze Zusammenfassung der Konfigurationsdateien:

  • Login-Shell (-l /--login ) liest /etc/profile zuerst und dann das erste, was es findet:~/.bash_profile , ~/.bash_login , und ~/.profile .
  • Interaktive Shell ohne Anmeldung (-i ) liest /etc/bash.bashrc und ~/.bashrc , in dieser Reihenfolge (es sei denn, die Datei --rcfile Option verwendet wird und anweist, woanders zu suchen).
  • Nicht interaktive Shells, z.B. aus einem anderen Programm gestartet, ohne -l zu verwenden oder -i Flags, liest die in BASH_ENV angegebene Datei Umgebungsvariable.
  • Bei Ausführung als sh als Login-Shell liest es /etc/profile und ~/.profile , in dieser Reihenfolge.
  • Bei Ausführung als sh als interaktives Nicht-Login liest es die in ENV angegebene Datei .

Linux
  1. Warum könnte man ~/.profile zu ~/.bash_profile hinzufügen?

  2. Vim läuft nicht in Tmux?

  3. Tomcat läuft, aber Port 8080 antwortet nicht

  4. GLIBCXX_3.4.9 nicht gefunden, wenn ffmpeg von PHP auf dem Lampp-Server ausgeführt wird

  5. Modul nicht gefunden, wenn ich eine Modprobe mache

Apache/Mysql läuft nicht. Falsch?

MongoDB-Dienst läuft nicht in Fedora

Gemeinsam genutzten Posix-Speicher entfernen, wenn er nicht verwendet wird?

CronJob läuft nicht

Nohup für Python-Skript funktioniert nicht, wenn es im Hintergrund mit &ausgeführt wird

Cron-Job läuft manchmal nicht