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 .bashrc
i .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
man bash
. Wiem, że to dużo tekstu, ale warto.man bash
części ZAPROSZENIE (dla mnie pkt 4 i 6).Odpowiedzi:
Po pierwsze,
.bash_profile
służy tylko do logowania do powłoki bash..bashrc
jest używany dla każdej INNEJ powłoki bash. Dlatego.bash_profile
zwykle będzie źródłem,.bashrc
jeś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żywaszscreen
lub otwierasz terminal), którą wkładasz.bashrc
.Niektóre rzeczy z moich własnych
.bashrc
(jako przykład):$PS1
shopt
Od mojego
.bash_profile
:.bashrc
$PATH
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
)źródło
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
--login
opcją, najpierw czyta i wykonuje polecenia z pliku/etc/profile
, jeśli plik istnieje. Po przeczytaniu tego pliku, szuka~/.bash_profile
,~/.bash_login
i~/.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_ENV
w środowisku, rozszerza swoją wartość, jeśli się tam pojawia, i wykorzystuje rozszerzoną wartość jako nazwę pliku do odczytu i wykonania.źródło