Czy można dowiedzieć się, które pliki ustawiają / dodają do zmiennych środowiskowych i jakie są ich priorytety?

9

Niektóre z moich zmiennych środowiskowych ( $PATH, $MANPATHi przyjaciół) są częściowo skonfigurować w różnych plikach źródłowych.

Czuję, że chcę polecenia lub metody, aby szybko zebrać, która część , w określonej zmiennej środowiskowej, pochodzi z jakiego pliku .

My $ PATH, na przykład, ma oczywiście ustawiony (dodawane do) w .bashrc, /etc/paths, /etc/paths.d/X11... a ja wciąż szuka tego ostatniego tajemniczego pliku, który nadmiernie stworzył duplikat definicji ścieżki w moim $PATH.

Ręczne wskazanie plików, które mają wpływ na zmienne środowiskowe, zajmuje dużo czasu. Musi istnieć przydatny sposób na ominięcie tej niepotrzebnej pracy polegającej na śledzeniu wszystkich seterów… czy tylko ja myślę w tym kierunku?

Henrik
źródło

Odpowiedzi:

6

Zazwyczaj PATHjest ustawiony na wartość początkową w sposób wysoce zależna od systemu przez program loguje Cię w ( pam_envjest częstym współpracownikiem), a następnie /etc/profilei ~/.profilei pliki, które zawierają one dalej zmodyfikować tę wartość.

Usuń wszelkie zmiany PATHw .bashrc, ustawienia środowiska nie należą .bashrc: patrz Różnica między .bashrc i .bash_profile .

Najpierw spróbuj zalogować się w trybie tekstowym (np. Za pomocą ssh localhost), ponieważ rozpoczęcie sesji jest o wiele prostsze niż w trybie graficznym.

Umieść set -xna początku /etc/profilei ~/.profile. Powłoka wydrukuje ślad tego, co robi w swoim standardowym strumieniu błędów; poszukaj przypisań do PATHśledzenia.

Nie ma pojęcia pierwszeństwa przed przypisaniami zmiennych środowiskowych: kto przypisuje ostatnie wygrane.

Gilles „SO- przestań być zły”
źródło
6

ŚCIEŻKA może być ustawiona w dowolnym miejscu, nie tylko w pliku .bashrc. Najprawdopodobniej twój system ma plik /etc/profilei / lub /etc/profile.localktóry ustawia domyślną ścieżkę dla wszystkich użytkowników w twoim systemie. Specyficzne dla użytkownika zmiany lub dodatki do niego mogą zostać ustawione w twoim .profilepliku, jeśli ich nie ma .bashrc, lub możesz po prostu użyć domyślnego w swoim systemie.

Jeśli chcesz wprowadzić zmiany, które dotyczą tylko ciebie, umieściłbym je w twoim .profileformularzu za pomocą następującego formularza:

export PATH=/new/directory:$PATH

w ten sposób edytując bieżącą ścieżkę zamiast całkowicie ją przepisując.

Sekcja „ZAPROSZENIE” man bash(lub tutaj ) wyjaśnia różnicę między .profilei .bashrc, i tak dalej, a także innymi plikami i czytanymi oraz w jakiej kolejności po zalogowaniu lub uruchomieniu powłoki.

frabjous
źródło
1

Jest bardzo mało prawdopodobne, aby istniał taki mechanizm. Pomyśl tylko o tym, ile sposobów można zmienić wartość zmiennej env w powłoce.

Możesz mieć jednak trochę szczęścia set -x.

alex
źródło