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 --norcopcji. Opcja --rcfilepliku 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_ENVw ś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ść PATHzmiennej 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 .profilejest tradycyjnie wykorzystywany do tego celu, ale bashma 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ć .bashrci BASH_ENVpo 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 shjest 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. bashMyś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.
Dobra odpowiedź. Tylko cytat: plik to tylko polecenia powłoki. Zwykle służy do zmiany podpowiedzi, ustawiania zmiennych środowiskowych i definiowania procedur powłoki.
smwikipedia,
2
Czy ktoś wie, co oznacza część rc .bashrc / .zshrc?
Może rc oznacza konfigurację środowiska wykonawczego.
Mike Diehn
12
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.
@pineapple: Alias jest sposobem na uruchomienie polecenia, które może być długie, z krótszym. Na przykład alias ll='ls -l'umożliwia wpisanie polecenia w llcelu wykonania ls -lpolecenia.
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:
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, alebash
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
iBASH_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: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.źródło
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:
źródło
.profile
po.bash_profile
? Jakaś logika?Powinien zawierać różne polecenia „inicjalizacji” dla twojej powłoki, np .:
alias ll='ls -l'
).źródło
ll='ls -l'
umożliwia wpisanie polecenia wll
celu wykonanials -l
polecenia.