Używam Linux Mint. Moja powłoka logowania ( cat /etc/passwd | grep myUserName
) to bash.
Po uruchomieniu środowiska graficznego i uruchomieniu z niego emulatora terminali widzę, że .bash_profile
nie jest on pozyskiwany (zmienne środowiska, które są export
w nim edytowane, nie są ustawione). Ale jeśli zaloguję się z konsoli tekstowej ( ctrl+ alt+ F1) lub ręcznie uruchomię bash -l
z emulatora terminala, .bash_profile
działa dobrze.
Czy się mylę, gdy uważam, że .bash_profile
należy to uzyskać po export
uruchomieniu X, a wszystkie zmienne powinny być dostępne w terminalu, uruchamiając z X?
PS Umieszczanie wszystkiego .bashrc
i pozyskiwanie go .bash_profile
nie jest dobrym pomysłem ( https://stackoverflow.com/questions/902946/ ): elementy środowiska powinny być pozyskiwane tylko raz.
.bash_profile
to skrypt konfiguracji uruchamiania bash. Nie ma standardowego upoważnienia X do źródła.bash_profile
.To, o czym myślisz, to raczej
.profile
. Pierwotnie był to plik konfiguracyjny uruchamiania powłoki Bourne'a (sh). Obecnie w wielu dystrybucjach środowisko pulpitu jest skonfigurowane jako źródło.profile
. Pamiętaj, że nie jest to również standard, ale wydaje się, że jest to konwencja.Debian korzystał ze źródła
.profile
podczas logowania graficznego ( strona wiki od 2013 r. ), Ale teraz nie robi tego ( strona wiki od 2016 r .).Archuj źródła
.xprofile
przy graficznym logowaniu ( strona wiki z 2013 r .).Ubuntu odradzało używanie
.profile
( strona wiki od 2013 r. ), Teraz już nie zniechęca ( strona wiki od 2016 r .).Jeśli chodzi o twoje inne pytanie: Dlaczego mój ~ / .bash_profile nie działa? Takie jest oczekiwane zachowanie.
Krótko mówiąc, zachowanie jest następujące:
~/.profile
~/.bashrc
Aby uzyskać więcej informacji, zobacz moją odpowiedź na podobne pytanie w askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc / 132319 # 132319
źródło
~/.bashrc
” to zła rada: powinieneś czytać tylko.bashrc
z interaktywnej powłoki . Pominąłeś tutaj podstawowy problem polegający na tym, że podczas logowania w X nie ma instancji logowania bash (w większości kombinacji menedżera wyświetlania / środowiska graficznego, w tym oczywiście AntonioK)..bashrc
”, zawsze miałem na myśli interaktywną powłokę. Wyjaśniłem tę część. Mam nadzieję, że to już nie wprowadza w błąd..profile
( link ) ” Wiki raz (absurdalnie) to odradzała; to zostało naprawione. (Uwaga/etc/profile
nie jest zalecana w przypadku przypisań systemowych, zamiast dodawania skryptów/etc/profile.d
.).profile
Pliki dla poszczególnych użytkowników są teraz przedstawiane jako jeden z zalecanych sposobów ustawiania zmiennych środowiskowych dla poszczególnych użytkowników: „Odpowiednie pliki dla ustawień zmiennych środowiskowych, które powinny mieć wpływ tylko na określonym użytkownikiem (a nie całym systemem) są ~ / .pam_environment i ~ / .profile . "~/.profile
logowania graficznego i~/.xsessionrc
powinien zostać użyty.W swoim pytaniu odwołujesz się do https://stackoverflow.com/questions/902946/ jako zalecanie, aby nie pobierać źródła, gdy zaakceptowana odpowiedź nakazuje
Wrzucenie tego wszystkiego
.profile
nie działało dla mnie w Linux Mint. Korzystanie.bashrc
działało dobrze.źródło
Podczas próby przeładowania / source ~ / .profile powstaje kilka problemów. [Dotyczy to Linuksa Ubuntu - w niektórych przypadkach szczegóły poleceń będą inne]
Ogłoszenie. 1)
Uruchomienie tego bezpośrednio w terminalu oznacza, że nie zostanie utworzona podpowłoka. Możesz więc użyć dwóch poleceń:
lub
W obu przypadkach spowoduje to zaktualizowanie środowiska o zawartość pliku .profile.
Ad 2) Możesz uruchomić dowolny skrypt bash, dzwoniąc
lub
W pierwszym przypadku spowoduje to utworzenie podpowłoki, która nie wpłynie na zmienne środowiskowe twojego systemu i będą widoczne tylko dla procesu podpowłoki. Po zakończeniu polecenia podpowłoki nie zostanie zastosowany żaden eksport itp. TO JEST WSPÓLNY BŁĄD I POWODUJE DUŻO DEWELOPERÓW, KTÓRE STRACĄ DUŻO CZASU.
Aby zmiany zastosowane w skrypcie miały wpływ na środowisko globalne, skrypt musi zostać uruchomiony
dowództwo.
Aby upewnić się, że skrypt nie jest uruchamiany w subszelach, możesz użyć tej funkcji. (Ponownie przykład dotyczy powłoki Ubuntu)
Mam nadzieję, że rozwiąże to niektóre z powszechnych nieporozumień! : D Powodzenia!
źródło
Prostym rozwiązaniem jest uczynienie terminala terminalem logowania. W przypadku terminala Gnome w obszarze „Kafelek i polecenie” profilu domyślnego można zaznaczyć pole „Uruchom polecenie jako powłokę logowania”. W tym artykule wyjaśniono różnicę między powłoką logowania a powłoką, która nie jest.
źródło