Odpowiedzi na pytania dotyczące SO i askubuntu , wraz z przeglądaniem (i czytaniem nagłówków) $HOME
oraz /etc/
wskazują liczbę plików, których można użyć do ustawienia zmiennych środowiskowych, w tym:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Zbieram te pliki w /etc/
pracy dla wszystkich użytkowników, podczas gdy pliki $HOME
są specyficzne dla użytkownika. Zbieram również, że .profile
jest ładowany przy logowaniu podczas .bashrc
ładowania, gdy /bin/bash
jest wykonywany. Rozumiem również, że różne programy mają różne pliki ustawień (np. .Rprofile
Dla R). Byłbym jednak wdzięczny za wyjaśnienia:
- Czy
*rc
i*profile
pliki są zasadniczo różne? - Jaki jest zakres takich plików (np. Które pliki są powszechnie używane w systemie Linux)
- Czy istnieje hierarchia (np.
.bashrc
Zastępuje ustawione zmienne.settings
) - Jakie jest dobre odniesienie dla tej klasy plików? Aby uzyskać opcje w tych plikach?
INVOCATION
sekcję wman bash
. ZobaczFHS
artykuł wiki na temat systemów plików Linux. To da dobry początek i odpowie na kilka z tych pytań. Pliki z poprzedzającą kropką (.
) są zazwyczaj specyficzne dla użytkownika - znajdują się w katalogu użytkownika$HOME
.Odpowiedzi:
Organizacja plików konfiguracyjnych jest o wiele mniej jednolita, niż sugerują twoje pytania. Nie ma „klasy”, nie ma „hierarchii”, nie ma globalnego „konfiguratora” ani komitetu, który określa wspólną składnię lub inne ładne czyste uogólnienia, takie jak te, których szukasz. Jest tylko mnogość odrębnych aplikacji, takich jak
R
,bash
,screen
i GNOME, z których wszystkie mają swoje własne sposoby robienia rzeczy, więc należy szukać w dokumentacji dla każdego indywidualny program odpowie na wszelkie szczegółowe pytania dotyczące danego pliku. Jeśli wydaje się to ad-hoc, to dlatego, że jest tak: większość oprogramowania Unix / Linux została opracowana do różnych celów przez różnych ludzi, którzy nieco inaczej konfigurowali konfigurację.Aby odpowiedzieć punktowo na inne pytania:
*rc
i*profile
niewiele znaczą, więc na to pytanie tak naprawdę nie można odpowiedzieć. „rc” jest jedynie powszechnie używanym skrótem lub sufiksem dla plików konfiguracyjnych. Jego etymologia sięga czasów starożytnych (w latach komputerowych) i prawdopodobnie oznacza uruchamianie poleceń (z runcom ). To, że aplikacje używają tego samego słowa, nie oznacza, że zgadzają się na konwencje. „profil” jest znacznie mniej powszechnym sufiksem.Zdefiniuj „zakres”. Większość aplikacji nie udostępnia plików konfiguracyjnych innym niepowiązanym aplikacjom. Jedynym możliwym wyjątkiem jest
/etc/profile
i.profile
, które może być używane przez wiele różnych powłok (w tym przynajmniejsh
ibash
). Istnieje coś zwanego środowiskiem związanym z każdym uruchomionym procesem, które może zawierać zmienne, które mogą wpływać na zachowanie tego procesu. Zasadniczo zmienne środowiskowe są ustawiane przez odpowiednie pliki konfiguracyjne powłoki lub pliki konfiguracyjne dowolnego używanego środowiska graficznego. Istnieją również pliki konfiguracyjne dla „bibliotek”, takie jak.inputrc
readline i.gtkrc*
GTK, które będą miały wpływ na każdą aplikację korzystającą z biblioteki.Nie, nie ma globalnej hierarchii plików konfiguracyjnych. Ponownie zapoznaj się z dokumentacją danego programu, na przykład z
bash
instrukcją dlabash
. Ogólna konwencja, na której zwykle można polegać, polega na tym, że ustawienia użytkownika$HOME
zastępują konfigurację ogólnosystemową w/etc
. Zazwyczaj odbywa się to poprzez odczytanie pliku użytkownika po systemie, tak aby późniejsze ustawienia zastępowały wcześniejsze. Nie stanowi to jednak gwarancji i w celu uzyskania ostatecznych odpowiedzi należy zapoznać się z dokumentacją używanego programu.Nie ma „klasy”, a przynajmniej ogólnej, która nie obejmuje wszystkich plików wymienionych w pytaniu, więc pytanie o odniesienie do takiej „klasy” jest dyskusyjne. Ponownie zapoznaj się z dokumentacją konkretnego używanego programu.
źródło
Myślę, że to pytanie jest zbyt ogólne na tak wielu poziomach, np. Zadajesz pytania dotyczące co najmniej czterech różnych programów w jednym pytaniu. Spojrzę tylko na różnicę między plikami konfiguracyjnymi w
/etc
i$HOME
.Unix jest systemem operacyjnym dla wielu użytkowników, co oznacza wiele różnych osób może korzystać z systemu, albo za pomocą
ssh
,telnet
, lubXorg
. Aby zapewnić użytkownikom ustandaryzowaną konfigurację, możesz podać konfigurację ogólnosystemową/etc/
, jest to zwykle używane przez Twoją Dystrybucję, aby zapewnić globalną konfigurację np .bash
Lubscreen
.Z drugiej strony niektórzy użytkownicy chcą samodzielnie dostosowywać ustawienia swoich programów, takie jak skróty klawiszowe, kolory lub wygląd. Odbywa się to poprzez plik konfiguracyjny w ich
$HOME
. Krótko mówiąc,/etc/
zapewnia konfigurację całego systemu, podczas gdy pliki konfiguracyjne w $ HOME pozwalają użytkownikom zmieniać / zastępować konfigurację całego systemu.źródło
Część odpowiedzi pochodzi z tego postu :
.bashrc
to skrypt powłoki, który Bash uruchamia za każdym razem, gdy jest uruchamiany interaktywnie.Kontrast
.bash_profile
i.profile
które są uruchamiane tylko na początku nowej powłoki logowania. (bash -l)Ty decydujesz, czy polecenie wchodzi w
.bashrc
tryb vs, w.bash_profile
zależności od tego, czy chcesz, aby było uruchamiane raz czy przy każdym uruchomieniu interaktywnej powłoki.źródło