Odpowiedzi:
Właściwie, to bash
konkretnie, że czyta .bashrc
(a /etc/bash.bashrc
). Istnieje wiele różnych powłok.
Strona podręcznika bash (autorstwa Briana Foxa i Cheta Rameya; strona informacyjna „Pliki startowe Bash” ) to autorytatywne odniesienie:
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. Opcja--rcfile
pliku zmusi bash do odczytu i wykonywania poleceń z pliku zamiast~/.bashrc
.Gdy bash jest uruchamiany nieinteraktywnie, na przykład w celu uruchomienia skryptu powłoki szuka zmiennej
BASH_ENV
w środowisku, rozszerza jej wartość, jeśli się tam pojawia, i wykorzystuje rozszerzoną wartość jako nazwę pliku do odczytu i wykonania. Bash zachowuje się tak, jakby wykonano następujące polecenie:if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ale wartość
PATH
zmiennej nie jest używana do wyszukiwania nazwy pliku.
Plik to tylko polecenia powłoki. Zwykle służy do zmiany podpowiedzi, ustawiania zmiennych środowiskowych i definiowania procedur powłoki. Plik ten .profile
jest tradycyjnie wykorzystywany do tego celu, ale bash
ma tak wiele rozszerzeń, że potrzebuje własnego pliku startowego dla użytkowników, którzy chcą umieścić bashisms w plikach startowych.
„ Brak powłoki logowania ” oznacza takie rzeczy, jak uruchamianie skryptów i zwykle okna terminali uruchamiane przez menedżerów okien. Czasami konfiguruję systemy * nix, aby mieć .bashrc
i BASH_ENV
po prostu źródło .profile
. Dopóki nie zbłądzisz poza poleceniami powłoki POSIX, będziesz mieć taką samą inicjalizację w dowolnej powłoce.
Jest to szczególnie cenne, kiedy sh
jest naprawdę bash
, co czasem się zdarza. Aby to zrobić, użyj:
. .profile
Jednym z powodów, dla których wszystko jest tak złożone, jest to, że czasami ludzie umieszczają rzeczy, które produkują dane wyjściowe w plikach startowych powłoki lub bezwarunkowo ustawiają monity. Powoduje to wiele problemów podczas uruchamiania programów powłoki i poleceń backtick w językach, nie wspominając o system(3)
programach C. bash
Myślę, że sposób uruchamiania ma jeden plik, w którym ustawienie danych wyjściowych i monitów jest OK, i jeden plik, w którym nie ma. Tradycyjnie przeprowadzany byłby test czasu wykonywania w celu rozróżnienia interaktywności, na przykład sprawdzanie, czy ustawiony jest monit.
Kiedy Bash się uruchamia, wykonuje polecenia w różnych skryptach.
Gdy Bash jest wywoływany jako interaktywna powłoka logowania, najpierw czyta i wykonuje polecenia z pliku / etc / profile, jeśli ten plik istnieje. Po odczytaniu tego pliku szuka ~ / .bash_profile, ~ / .bash_login i ~ / .profile, w tej kolejności, i odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.
Po wyjściu z powłoki logowania Bash odczytuje i wykonuje polecenia z pliku ~ / .bash_logout, jeśli istnieje.
Po uruchomieniu interaktywnej powłoki, która nie jest powłoką logowania, Bash odczytuje i wykonuje polecenia z ~ / .bashrc, jeśli ten plik istnieje. Można temu zapobiec, używając opcji --norc. Opcja --rcfile pliku zmusi Bash do odczytu i wykonywania poleceń z pliku zamiast ~ / .bashrc.
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
Oto kilka sztuczek i wskazówek:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Spróbujmy ustawić monit, aby mógł wyświetlać dzisiejszą datę i nazwę hosta:
PS1="\d \h $ "
.profile
po .bash_profile
? Jakaś logika?
Powinien zawierać różne polecenia „inicjalizacji” dla twojej powłoki, np .:
alias ll='ls -l'
).ll='ls -l'
umożliwia wpisanie polecenia w ll
celu wykonania ls -l
polecenia.