Zdaję sobie sprawę, że istnieją /etc/profile
i /etc/bashrc
pliki do ustawiania globalnych zmiennych środowiskowych i może po prostu nie rozumiem ich celów, ale ...
Czy istnieje bash_profile
plik globalny ?
Używam Mac OS X.
To się nie nazywa bash_profile
, ale standardowym miejscem globalnej konfiguracji bash jest /etc/bash.bashrc
. Zwykle wywołuje się to, /etc/profile
jeśli powłoka jest bash. Na przykład w moim /etc/profile
mam:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
Pod względem użytkowania /etc/profile
zapewnia konfigurację ogólnosystemową dla wszystkich kompatybilnych powłok Bourne (sh, bash, ksh itp.). Zwykle nie ma potrzeby równoważnika /etc/bash_profile
, ponieważ celem pliku profilu jest kontrolowanie zachowania powłok logowania. Zwykle wszystko, co chcesz zrobić, nie będzie specyficzne dla bash. /etc/bash.bashrc
jest specyficzny dla bash i będzie uruchamiany zarówno dla powłok zalogowanych, jak i niezalogowanych.
Aby jeszcze bardziej skomplikować, wygląda na to, że OS X nawet nie ma /etc/bash.bashrc
. Jest to prawdopodobnie związane z faktem, że Terminale w OS X domyślnie działają jako powłoki logowania , więc rozróżnienie zostaje utracone:
Wyjątkiem od wytycznych dotyczących okna terminala jest aplikacja Terminal.app w systemie Mac OS X, która domyślnie uruchamia powłokę logowania dla każdego nowego okna terminala, wywołując plik .bash_profile zamiast .bashrc. Inne emulatory terminala GUI mogą robić to samo, ale większość tego nie robi.
Nie uruchamiam OS X, więc na tym kończy się moja wiedza.
/etc/bash.bashrc
z nieinteraktywnej powłoki./etc/profile
może być odczytany przez nieinteraktywną powłokę. Zobacz różnice między powłoką logowania a powłoką niezalogowaną?/etc/profile
w Ubuntu 12.04. Co byś zasugerował, gdyby ktoś chciał,/etc/profile
który byłby wykonywany tylko w trybie bash, a nie żadnej innej powłoki kompatybilnej z SH?/etc/profile
plików dla mojego systemu zawiera komentarz na górze, który brzmi:# System-wide .profile for sh(1)
. Czy to znaczy, żeprofile
jestsh
specyficzne? Czysh
jakoś działa wcześniejbash
?sh
jest podzbiorembash
./etc/profile
jest wykonywany dlash
,bash
i wszystkich innych powłok kompatybilnych z Bourne./etc/bashrc
na komputerze Mac, a nie/etc/bash.bashrc
. Wydaje się również, że działa/bin/sh
./etc/profile
jest globalnybash_profile
. Nie ma pliku, który byłby specyficzny dla bash, bash po prostu czyta standardowy plik odczytywany przez wszystkie powłoki w stylu Bourne'a. Tam możesz ustawić ogólnosystemowe zmienne środowiskowe.Zobacz Czy istnieje plik równoważny „.bashrc” odczytywany przez wszystkie powłoki? ogólny przegląd typowych plików startowych bash.
źródło
Skonfiguruj interaktywną powłokę (Bash) globalnie
To się nie ładuje
/etc/profile
, więc nic się/etc/profile.d/
nie ładuje (w przeciwieństwie do powłok logowania, patrz koniec).Globalny plik do tego to / etc / bashrc lub /etc/bash.bashrc (w zależności od
-DSYS_BASHRC=
flagi ustawionej podczas kompilacji):Zwykle dobrym pomysłem jest pozostawienie tego pliku w stanie, w jakim się znajduje (tak dużo, jak to możliwe), aby uniknąć konfliktów. Strategia, z której korzystam, jest podobna do strategii używanej przez powłoki (/ etc / profile).
Moją strategią jest dodanie modułu ładującego do powyższego pliku:
Teraz mogę łatwo dodać n dostosowań do globalnego interaktywnego pliku powłoki (bash), umieszczając nowe pliki .sh w katalogu /etc/bashrc.d.
Koloruj Grep na całym świecie
/etc/bashrc.d/grep.sh
Możesz to zrobić za pomocą tej linijki:
Porównaj profil. D vs bashrc.d
Jeśli po przeczytaniu tego nie będziesz przekonany, zrób to, aby się przekonać:
Otwórz nowy emulator terminala i wyszukaj w katalogu użytkownika kilka popularnych słów, takich jak „the”, używając grep
Nic nie powinno być kolorowe. Zrób to samo w wirtualnej konsoli, wykonując CTRLALTF1 (pamiętaj, że Twój serwer X prawdopodobnie działa na CTRLALTF7, abyś mógł się z powrotem przełączyć. Jeśli zapomnisz, po prostu zrestartuj na przykład menedżera pulpitu)
da pożądane kolorowe wyniki.
Nic nie powinno być kolorowe. Zrób to samo w wirtualnej konsoli, wykonując tę czynność CTRLALTF1(pamiętaj, że Twój serwer X prawdopodobnie działa CTRLALTF7, abyś mógł się z powrotem przełączyć. Jeśli zapomnisz, po prostu ponownie uruchom na przykład menedżera pulpitu)
da pożądane kolorowe wyniki.
Powłoka logowania jest dostępna podczas uruchamiania komputera lub przełączania konsol wirtualnych za CTRLALTF1pomocą FNthkonsoli wirtualnej.
Powłoka logowania ładuje się
/etc/profile
podczas ładowania/etc/profile.d/*.sh
plików.źródło