Zrozumienie .bashrc i .bash_profile [duplikat]

1

Możliwa duplikat:
kiedy należy umieścić konfiguracje w .bashrc vs. .bash_profile?

Jestem n00b, jeśli chodzi o pracę w środowisku Linux env i chciałbym poznać cel .bashrci .bash_profile. Wiem tylko, że są one specyficzne dla każdego konta użytkownika. Jakie funkcje / zachowanie można dodać / zmodyfikować, implementując coś w tych plikach

nazwa_maski
źródło
1
Wszyscy rodzą się jako n00b. Ale następnym krokiem jest zrobienie tego man bash. Wiem, że to dużo tekstu, ale warto.
ott--
2
-1 To pytanie pokazuje brak wysiłku badawczego. Jest to wyczerpująco wyjaśnione w man bashczęści ZAPROSZENIE (dla mnie pkt 4 i 6).
Daniel Beck
Także: Różnica między .bashrc i .bash_profile (prawdopodobnie to więcej niż inne)
slhck

Odpowiedzi:

5

Po pierwsze, .bash_profilesłuży tylko do logowania do powłoki bash. .bashrcjest używany dla każdej INNEJ powłoki bash. Dlatego .bash_profilezwykle będzie źródłem, .bashrcjeśli istnieje, więc nie musisz powielać żadnych poleceń, które chcesz uruchomić dla każdej powłoki, niezależnie od tego, czy była to powłoka logowania, czy nie.

Ogólnie rzecz biorąc, te skrypty robią dwie rzeczy: Uruchamiaj programy i ustaw zmienne środowiskowe. Wszystko, co chcesz uruchomić podczas logowania, wkładania .bash_profile, wszystko, co chcesz ustawić w każdej powłoce (na przykład, jeśli używasz screenlub otwierasz terminal), którą wkładasz .bashrc.

Niektóre rzeczy z moich własnych .bashrc(jako przykład):

  • Zestaw $PS1
  • Włącz specjalne reguły wypełniania kart
  • Ustaw opcje powłoki, uruchamiając shopt
  • Ustaw aliasy poleceń

Od mojego .bash_profile:

  • Źródło .bashrc
  • Dodaj katalogi do $PATH
  • Biegać ssh-agent

Należy zauważyć, że plik .bash_profile jest wykonywany tylko wtedy, gdy logujesz się bezpośrednio do powłoki bash. Jeśli zaczynasz sesję X, logujesz się na serwerze X, który będzie miał własny skrypt logowania (zwykle coś w rodzaju .xsession)

DerfK
źródło
4

Wszystko to wyjaśniono w podręczniku Bash w sekcji „Pliki startowe Bash”: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

AKTUALIZACJA: Oto krótka wersja:

Gdy Bash jest wywoływany jako interaktywna powłoka logowania lub jako nieinteraktywna powłoka z --loginopcją, najpierw czyta i wykonuje polecenia z pliku /etc/profile, jeśli plik istnieje. Po przeczytaniu tego pliku, szuka ~/.bash_profile, ~/.bash_logini ~/.profile, w tej kolejności, a odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.

Po uruchomieniu interaktywnej powłoki, która nie jest powłoką logowania, Bash odczytuje i wykonuje polecenia z ~/.bashrc, jeśli ten plik istnieje.

Gdy Bash jest uruchamiany nieinteraktywnie, na przykład w celu uruchomienia skryptu powłoki, szuka zmiennej BASH_ENVw środowisku, rozszerza swoją wartość, jeśli się tam pojawia, i wykorzystuje rozszerzoną wartość jako nazwę pliku do odczytu i wykonania.

Fran
źródło
2
Dodaj więcej do swojej odpowiedzi niż tylko link. Nie twierdzę, że link jest zły, ale szybkie podsumowanie byłoby znacznie lepsze.
Zoredache,
@Zoredache OK, zaktualizowałem swoją odpowiedź krótkim streszczeniem tego, co mówi instrukcja.
Fran