.bashrc
i NIE.bash_profile
są skryptami. Są to pliki konfiguracyjne, które są pobierane za każdym razem, gdy są wykonywane na jeden z dwóch sposobów:bash
Sekcja WYWOŁANIE strony podręcznika bash jest nowością.
Logowanie powłoka jest jeden, którego pierwszy znak argumentu jest zerowy -
, lub jeden uruchomiony z --login
opcją.
Interaktywna powłoka jest jeden uruchomiony bez argumentów nieopcyjnych i bez -c
opcji, których standardowe wejście i błędów są podłączone do zacisków (jak określono isatty(3))
, albo jeden uruchomiony z -i
opcją. PS1 jest ustawiony i $-
obejmuje i
, jeżeli bash
jest interaktywny, dzięki czemu skrypt lub plik startowy, aby przetestować ten stan.
Poniższe akapity opisują sposób bash
wykonywania plików startowych. Jeśli któryś z plików istnieje, ale nie można go odczytać, bash zgłasza błąd. Tyldy są rozwijane w nazwach plików, jak opisano poniżej w
Rozbudowa tyld w sekcji ROZSZERZENIE .
Kiedy 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.
--noprofile
Opcja może być stosowany, gdy powłoka jest uruchamiany w celu zahamowania tego zachowania.
Po wyjściu z powłoki logowania bash czyta i wykonuje polecenia z pliku ~/.bash_logout
, jeśli istnieje.
Po uruchomieniu interaktywnej powłoki, która nie jest powłoką logowania, bash czyta i wykonuje polecenia z ~/.bashrc
, jeśli plik istnieje. Można temu zapobiec, używając tej --norc
opcji. Ta --rcfile file
opcja wymusi na bashu czytanie i wykonywanie poleceń z pliku zamiast ~/.bashrc
.
Możesz kontrolować, kiedy zostaną załadowane za pomocą przełączników wiersza poleceń, --norc
oraz --noprofile
. Możesz również zastąpić lokalizację, z której zostaną załadowane za pomocą --rcfile
przełącznika.
Jak wspomnieli inni, możesz naśladować sposób ładowania tych plików za pomocą source <file>
polecenia lub . <file>
polecenia.
Najlepiej pomyśleć o tej funkcjonalności w następujący sposób:
- bash zaczyna się w czystym środowisku
- bash następnie otwiera jeden z tych plików (w zależności od tego, jak został wywołany jako interaktywny lub login, a następnie ...
- ... linia po linii wykonuje każde z poleceń w pliku ...
- po zakończeniu daje kontrolę w formie monitu, czekając na dane wejściowe
Metody wywoływania
Wydaje się, że ten temat pojawia się co jakiś czas, więc oto krótki ściągawka różnych sposobów wywoływania bash
i tego, co one skutkują. UWAGA: Aby pomóc, dodałem komunikaty „sourced $ HOME / .bashrc” i „sourced $ HOME / .bash_profile ”do odpowiednich plików.
podstawowe połączenia
bash -i
$ bash -i
sourced /home/saml/.bashrc
bash -l
$ bash -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -il -or- bash -li
$ bash -il
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -c "..cmd .."
$ bash -c 'echo hi'
hi
UWAGA: Zauważ, że -c
przełącznik nie źródło żadnego pliku!
wyłączenie odczytu plików konfiguracyjnych
bash --norc
$ bash --norc
bash-4.1$
bash - noprofile
$ bash --noprofile
sourced /home/saml/.bashrc
bash --norc -i
$ bash --norc -i
bash-4.1$
bash --norc -l
$ bash --norc -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash --noprofile -i
$ bash --noprofile -i
sourced /home/saml/.bashrc
bash --noprofile -l
$ bash --noprofile -l
bash-4.1$
bash --norc -i -or- bash --norc -l
$ bash --norc -c 'echo hi'
hi
Więcej ezoterycznych sposobów na wywołanie bash
bash --rcfile $ HOME / .bashrc
$ bash -rcfile ~/.bashrc
sourced /home/saml/.bashrc
bash --norc --rcfile $ HOME / .bashrc
$ bash --norc -rcfile ~/.bashrc
bash-4.1$
Te zawiodły
bash -i -rcfile ~ / .bashrc
$ bash -i -rcfile ~/.bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: /home/saml/.bashrc: restricted: cannot specify `/' in command names
bash -i -rcfile .bashrc
$ bash -i -rcfile .bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: .bashrc: command not found
Prawdopodobnie jest ich więcej, ale masz rację, mam nadzieję ...
Co jeszcze?
Na koniec, jeśli jesteś tak zafascynowany tym tematem, że chcesz przeczytać / zbadać więcej na ten temat, gorąco polecam przejrzenie Przewodnika dla początkujących Bash, w szczególności sekcji: 1.2. Zalety Bourne Again SHell . Różne podrozdziały w tym podrozdziale, „1.2.2.1. Wywołanie ” do „1.2.2.3.3. Interaktywne zachowanie powłoki” wyjaśniają niewielkie różnice poziomów między różnymi sposobami wywoływania bash
.