Do dnia, w którym ustawiłem zmienne środowiskowe w bash.bashrc
pliku. Ostatnio kazano mi użyć /etc/environment
pliku. Oba działają dobrze.
Jaka jest różnica między nimi?
Poszukałem go i stwierdziłem, że „bashrc jest używany dla konkretnego użytkownika i środowiska, w całym systemie”. Co rozumie się tutaj przez cały system? /etc/bash.bashrc
stosuje również zmiany w całym systemie. Popraw mnie, jeśli się mylę. Każda pomoc będzie mile widziana.
źródło
/etc/environment
Plik ustawia zmienną systemową szeroki dla każdego użytkownika na bagażniku. Polecenia w/etc/bash.bashrc
są wykonywane, jeślibash
powłoka zostanie otwarta przez dowolnego użytkownika. Tak więc zmienne nie zostałyby ustawione, chyba żebash
powłoka zostanie otwarta co najmniej raz.źródło
A gdy pytasz o „ system ”:
Pliki konfiguracyjne znajdujące się w
/etc
katalogu dotyczą wszystkich użytkowników w systemie. Dla/etc/bash.bashrc
oznaczałoby to dla wszystkich i wszystkiego, co jest za pomocą „Borne Again Shell” aka Bash na tej maszynie. Nawet jeśli jesteś jedynym człowiekiem, który go używa, może to dotyczyć „użytkowników technicznych” (po prostu spójrz/etc/passwd
i sprawdź, jak często występuje tam termin „/ bin / bash” - lub użyjgrep bash /etc/passwd | wc -l
, co powinno dać ci liczba ta bezpośrednio (co oznacza: „pobierz” wszystkie wiersze zawierające ciąg „bash” z pliku „/ etc / passwd”, i wyślij wyniki („|”) do polecenia „wc” (liczba słów), aby policzyć linie („-l”).Dlatego dla użytkownika bezpieczniej jest zmodyfikować
~/.bashrc
(oznacza to plik „.bashrc” - z wiodącą kropką, tak - w katalogu domowym, np./home/ankur/.bashrc
), Który następnie wpływa tylko na użytkownika i pozostawia wszystko inne w spokoju . Pliki w/etc
powinny być zmieniane tylko wtedy, gdy zmiany systemowe są naprawdę zamierzone.Poza tym: Obie konfiguracje zostaną użyte, jeśli istnieją. Najpierw plik ogólnosystemowy (tutaj
/etc/bash.bashrc
:) jest odczytywany i „pozyskiwany” (jego ustawienia są stosowane do bieżącej sesji), a następnie użytkownicy/home/username/.bashrc
są obsługiwani tak samo, a zatem mogą dodawać, a nawet zmieniać / nadpisywać ustawienia z globalnego/etc/bash.bashrc
plik.źródło
Poza systemem szerokiej użytkownika i szeroki zakres dyskusji, jeden najbardziej znaczącą różnicą jest
/etc/environment
to nie skrypt inny niż~/.bashrc
.Nie można wyłuskać zmiennej wewnątrz
/etc/environment
, jej przypisanie zmiennej, która przyjmuje wartość linii dosłownie (jak już wspomniano w roadmr).Twoje Ubuntu zablokuje cię, jeśli spieprzysz
$PATH
wnętrze/etc/environment
, próbując dołączyć nową ścieżkęJeśli Twoja strona logowania do Ubuntu Gnome lub Unity nie wpuściła Cię bez zgłaszania nieprawidłowego hasła. A ostatnio zmodyfikowałeś
/etc/environment
, najprawdopodobniej tak jest.Rozwiązaniem jest zalogowanie się do konsoli wirtualnej CTRL+ ALT+ F1konsola logowania, ręczne sprawdzenie
$PATH
i naprawa/etc/environment
pliku.Zgodnie z tym ,
/etc/environment
jest ładowany przez PAM stosu, który zapełnia zmienną środowiskową wiersz po wierszu.źródło
Różnica między nimi polega na tym, że
/etc/enivironment
plik będzie działał dla wszystkich użytkowników, podczas gdy plik bash.bashrc będzie działał szczególnie dla tego użytkownika. A jeśli zrobisz coś złego w/etc/environment
pliku, konsekwencje mogą być poważne, ponieważ możesz łatwo cofnąć zmiany w pliku bash.bashrc, kopiując zawartość pliku / etc / environment. Ale pierwsza preferencja dotyczybash.bashrc
pliku, a następnie pliku / etc / environment. Nie jest tak, że jeśli wprowadzisz zmiany wbash.bashrc
pliku, terminal da pierwszeństwo lokalnemu plikowi użytkownika (tj.bash.bashrc
), A następnie plikowi głównemu (tj/etc/environment
.).źródło