.bash_profile nie jest pobierany podczas uruchamiania su


41

Mam użytkownika, powiedzmy user1, który ma modyfikacje .bash_profile, jeden z nich zmienia PATHnp export PATH=/some/place:$PATH. : . Zmiana ta działa dobrze, jeśli loguję się jako user1lub zrobić su - user1.

Ale gdy próbuję uruchomić polecenie poprzez sujak rootnp:

su -c test.sh oracle

(test zawiera echo $PATH)

Wydaje się, że nie ma zmodyfikowanych PATH(ani root PATH). Próbowałem również kopiować .bash_profiledo .profile, ale bezskutecznie.

Dlaczego to się dzieje?


użyj --login zmień nasu
Nikhil Mulley

1
FYI - niezły opis plików konfiguracyjnych bash hacktux.com/bash/bashrc/bash_profile
Nikhil Mulley

Odpowiedzi:


60

Używanie subez -llub -zaczyna się bashjako interaktywna powłoka, ale bez logowania, która nie odczytuje z żadnego z określonych plików. Użyj -llub -opcję lub umieścić odpowiedni do config /root/.bashrc.

Szybkie podsumowanie plików konfiguracyjnych:

  • Logowanie powłoki ( -l/ --login) ma /etc/profilepierwszy, a następnie pierwszy znajdzie się z: ~/.bash_profile, ~/.bash_logini ~/.profile.
  • Interaktywna, ale niezalogowana powłoka ( -i) czyta /etc/bash.bashrci ~/.bashrc, w tej kolejności (chyba że --rcfileopcja jest użyta i każe jej szukać gdzie indziej).
  • Nieinteraktywne powłoki, np. Uruchamiane z innego programu bez użycia flag -llub -i, odczytują plik określony w BASH_ENVzmiennej środowiskowej.
  • Po uruchomieniu jako shpowłoka logowania będzie czytać /etc/profilei ~/.profilew tej kolejności.
  • Uruchamiany jako shinteraktywny login nie odczytuje pliku określonego w ENV.

5

Bash zachowuje się inaczej w zależności od tego, czy uważa, że ​​jest to powłoka logowania, tj. Pierwsza powłoka uruchamiana po zalogowaniu do systemu. Czyta tylko, .bash_profilejeśli jest to powłoka logowania. Jeśli zamiast tego PATHwstawisz zmienny kod .bashrc, zostanie on uruchomiony dla wszystkich interaktywnych powłok bash, a nie tylko dla loginów.


0

Jeśli używasz środowiska Gnome w Scientific Linux 6 (lub prawdopodobnie RHEL 6), uruchom terminal. Idź do Edit-> Profile Preferences-> "Title and Command"zakładka. Upewnij się, że pole wyboru „Uruchom polecenie jako powłoka logowania” jest zaznaczone. Odkryłem, że aplikacja terminalu Gnome ignoruje moją, .bash_profilechyba że to zrobię.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.