.profile nie działa, gdy uruchamiam terminal bash

14

Kiedy uruchamiam terminal bash, mój plik .profile nie jest wykonywany. Nie mam ~ / .bash_profile ani ~ / .bash_login, więc .profile ma działać, prawda? Co jeszcze może być nie tak?

David Doria
źródło

Odpowiedzi:

22

To nie jest powłoka logowania.

Jeśli powłoka jest powłoką logowania, poszuka pliku .bash_profile, jeśli istnieje, a następnie .profile. Inne powłoki szukają .bashrc

Tak więc możesz umieścić to, co chcesz w każdej instancji powłoki w .bashrc i ewentualnie mieć referencję, która pobiera .bashrc w .profile.

Więc: .bashrc:

stuff you want

koniec pliku .profile:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
źródło
Kiedy więc uruchamiam konsolę w KDE, jest to powłoka niezalogowana, prawda? Na innym komputerze zdecydowanie umieściłem różne rzeczy w .profile i kazałem im działać, kiedy otwieram taki terminal - wydaje mi się, że nie rozumiem, kiedy chciałbyś, aby przy logowaniu wydarzyło się coś innego niż kiedy otwierasz terminal?
David Doria,
@DavidDoria to zależy, zmieniłem konfiguracje lub utworzyłem aliasy do tego, co działa konsola, aby ją uruchomić bash --login. W twoim przypadku wydaje się, że po prostu uruchomisz bash, który domyślnie nie uruchomi powłoki logowania
Rich Homolka
Jeśli używasz LightDM, może to być powód. Inne menedżery wyświetlania, takie jak GDM i KDM źródłowy plik .profile podczas logowania, ale LightDM nie (zgodnie z projektem). Zobacz bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
WakiMiko
Używam KDM.
David Doria,
2
Jeśli używasz Gnome Terminal, możesz zrobić Edycja-> Preferencje profilu, przejść do zakładki Tytuł i polecenie i zaznaczyć „Uruchom polecenie jako powłokę logowania”. Będzie wtedy pobierał Twój .bash_profile lub .profile za każdym razem, gdy otworzysz terminal, zgodnie z oczekiwaniami.
Lambart
3

spróbuj użyć ~/.bashrczamiast tego.

goweon
źródło
1

Jeśli korzystasz z pulpitu graficznego, menedżer pulpitu powinien pobrać plik .profile. Lightdm obecnie pobiera .profile, przynajmniej na Ubuntu. Zobacz: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

W przypadku kdm i Kubuntu-12.04 pobierany jest plik / etc / kde4 / kdm / Xsession, który zawiera także plik .profile. Kubuntu-12.10 prawdopodobnie użyje lightdm. Ubuntu 12.04 używa lightdm, dzięki czemu / usr / sbin / lightdm-session sources .profile.

Myślę, że sposobem jest (1) ustawienie / eksport ustawień środowiska w ~ / .profile i (2) .profile pochodzi z .bash_profile:

[[ -f ~/.profile ]] && . ~/.profile

(i nie mogą mieć .bashrc pochodzącego z .profile lub .bash_profile).

Zobacz też:

Freddy Vulto
źródło
1
To wyjaśnia, w jaki sposób uzyskać .profileźródło przy logowaniu, ale tak naprawdę zastanawia się, jak je zdobyć bash, gdy uruchamia terminal (nie przy logowaniu)
cpast
Nie powinieneś chcieć, aby plik .profile był pozyskiwany podczas uruchamiania nowego terminala (z poziomu KDE). Głównym celem .profile jest, aby był on pozyskiwany raz podczas logowania, na terminalu graficznym lub tekstowym; Plik .profile powinien był zostać pobrany w momencie zalogowania się do KDE.
Freddy Vulto
Plik .profile powinien pochodzić od menedżera pulpitu. Zależy to od zrozumienia celu pliku. W Debianie / etc / profile (i ~ / .profile jako rozszerzenie) jest przeznaczony dla powłok typu bash .
Alois Mahdal
Nie musisz go ponownie pobierać, JEŚLI jest on pozyskiwany podczas logowania. twoja bash odziedziczy ją, chyba że zrobisz coś głupiego, na przykład „export PATH = ~ / .bin” lub coś, co spowoduje, że zostanie zastąpione.
HörmannHH