Dość często brakuje pliku konfiguracyjnego (a nawet katalogów). W takim przypadku oprogramowanie, które powinno je odczytać, będzie korzystało z domyślnej konfiguracji i / lub czytało inne źródła w celu pobrania konfiguracji. Jeśli chcesz zmodyfikować plik konfiguracyjny, który nie istnieje, po prostu utwórz go najpierw.
Bakuriu,
Odpowiedzi:
84
Używa Ubuntu ~/.profile.
możesz stworzyć swój .bash_profilew Ubuntu, ale wtedy .profilenie będzie czytany.
Jeśli czytamy treść .profile:
cat ~/.profile
wynik
# ~/.profile: executed by the command interpreter for login shells.# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login# exists.
.profile nie działało dla mnie. Musiałem zmieniać .bashrc vim ~/.bashrcnastępnie. ~/.bashrc
Nahid
Użycie .bash_profile nie działa na Ubuntu. Używa Dash jako powłoki logowania GUI, a nie Bash, więc profil bash nie jest czytany.
Jonathan Hartley,
Jeśli edytujesz .profile, musisz się wylogować i zalogować ponownie, aby zobaczyć zmiany.
Jonathan Hartley
8
Podczas wywoływania powłoki bash szuka plików konfiguracyjnych w następującej kolejności:
[0]~/.bash_profile
[1]~/.bash_login
[2]~/.profile
Po znalezieniu pierwszego, to przestaje patrząc na innych, więc jeśli nie ma .bash_profilew moim $HOMEbash nie będzie szukać .bash_logini .profilejuż.
Z tych trzech nazw plików, Ubuntu domyślnie używa .profilenazwy, na którą możesz zmienić, .bash_profilejeśli chcesz:
mv ~/.profile ~/.bash_profile
Teraz, jeśli otwieramy nową powłokę bash za pomocą bash -l, su - $USER, sudo -u $USER -ilub innych poleceń bash, który działa jako powłoka logowania, ~/.bash_profiledostanie pozyskiwane.
Ważne, aby pamiętać:
To, o czym mówiłem do tej pory, dotyczy tylko samego Basha, gdy logujesz się do systemu z GUI, menedżer wyświetlania jest odpowiedzialny za pozyskiwanie odpowiednich plików.
Ubuntu używa gdm3jako menedżera wyświetlania, jeśli spojrzymy na: /etc/gdm3/Xsessionmożemy zobaczyć, że żaden z plików nie zostanie pozyskany, z wyjątkiem .profile:
# First read /etc/profile and .profilefor file in/etc/profile "$HOME/.profile";doif[-f "$file"];then
source_with_error_check "$file"fidone
więc jeśli używasz GUI do logowania, zachowaj plik pod .profilenazwą, w przeciwnym razie możesz przegapić niektóre zmienne i ustawienia w swoich środowiskach.
Wydaje mi się, że lepszym rozwiązaniem jest utworzenie dowiązania symbolicznego do .profile:
ln -s ~/.profile ~/.bash_profile
Teraz Twoje dane żyją .profile, gdmniczego nie umkną, ładują .bash_profilesię w rzeczywistości .profile, a edycja każdego z nich daje ten sam wynik.
Brakuje .profile?
Jeśli nie masz, .profilepobierz jego kopię tutaj:
cp /etc/skel/.profile ~/.profile
lub
# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
Ale jeśli Bash najpierw szuka ~ / .bash_profile, to dlaczego nie robi tego w Ubuntu? Czy Ubuntu zmodyfikowało Bash? To wydaje się dziwne. man bashna Ubuntu nadal opisuje, jak będzie najpierw szukać .bash_profile.
Jonathan Hartley
.bash_profileNajpierw szuka, nie może go znaleźć (ponieważ nie istnieje), a następnie .bash_loginnie może go znaleźć ponownie (ponieważ Ubuntu nie używa tych dwóch nazw), w końcu szuka .profilei tak, jest. Więc jeśli tworzysz .bash_profilew ~, to zastępujesz ubuntu ~/.profile, jest to domyślne zachowanie bash, nic tu nie zostało zmodyfikowane.
Ravexina
Racja, tak też myślałem na początku! I to, co opisujesz, dzieje się na RHEL. Ale w Ubuntu tak nie jest. Jeśli utworzę plik .bash_profile, nie jest on czytany. Właśnie zdałem sobie sprawę, że dzieje się tak, ponieważ Ubuntu nie używa już „Bash” jako powłoki logowania GUI. Zamiast tego używa „Dash”. Myślę, że jest to prawdą od około 18.04.
Jonathan Hartley,
Brakuje Ci tutaj sensu. Właściwie mówimy o samym bashu, mówię tutaj o tym, że Ubuntu tworzy „.profile”, a nie inne, więc jeśli otworzymy nową powłokę bash (powłokę logowania), to kolejność czytania tych plików, nie „ bez względu na to, jakiej dystrybucji używamy. :)
Ravexina,
Jeśli czytelnicy zmienią nazwę .profile na .bash_profile, jak sugeruje twoja odpowiedź, to dla osób na Ubuntu ten plik nie zostanie odczytany przy logowaniu ani przy otwieraniu terminala. Złamałeś ich system. Jedynym sposobem, w jaki plik zostanie odczytany, jest uruchomienie sesji bash z argumentem „--login”, aby jawnie uczynić go powłoką logowania. To nigdy nie nastąpi automatycznie na ich komputerze.
Jonathan Hartley
5
Oznacza to, że plik nie istnieje. Ale możesz utworzyć plik i wykonać bash/ źródła plik, jeśli bashjest wywoływany jako powłoka logowania. Dlatego za każdym razem logujesz się przez powłokę (na przykład przez ssh).
Jeśli chcesz, aby treść była wykonywana za każdym razem, gdy otwierasz terminal, powinieneś .bashrczamiast tego zmodyfikować plik.
W oryginalnym systemie Linux plik .profile jest stosowany podczas logowania do GUI, łączenia się zdalnie lub logowania do konsoli, tj. Po naciśnięciu klawiszy Ctrl + Shift + F2. Ma reprezentować początkowy czas logowania do komputera, tworząc powłokę, która jest nadrzędna dla wszystkich innych tworzonych następnie procesów. Podejrzewam, że na WSL nie ma czegoś takiego, więc Twój profil .profile może nigdy nie zostać odczytany.
Jonathan Hartley,
dla mnie to samo. ~/.profilepo prostu nie ładuje się domyślnie w Ubuntu 18.04
javapowered
0
Jeśli masz na myśli .bashrc, znajdziesz go w swoim katalogu domowym. Jeśli go nie ma, możesz skopiować go z folderu / etc / skel do folderu domowego.
Jeśli potrzebujesz więcej informacji na ten temat, odwiedź stronę Stefan Lippens.
~/.profile
.Odpowiedzi:
Używa Ubuntu
~/.profile
.możesz stworzyć swój
.bash_profile
w Ubuntu, ale wtedy.profile
nie będzie czytany.Jeśli czytamy treść .profile:
wynik
Więc użyj
~/.profile
zamiast~/.bash_profile
źródło
vim ~/.bashrc
następnie. ~/.bashrc
Podczas wywoływania powłoki bash szuka plików konfiguracyjnych w następującej kolejności:
Po znalezieniu pierwszego, to przestaje patrząc na innych, więc jeśli nie ma
.bash_profile
w moim$HOME
bash nie będzie szukać.bash_login
i.profile
już.Z tych trzech nazw plików, Ubuntu domyślnie używa
.profile
nazwy, na którą możesz zmienić,.bash_profile
jeśli chcesz:Teraz, jeśli otwieramy nową powłokę bash za pomocą
bash -l
,su - $USER
,sudo -u $USER -i
lub innych poleceń bash, który działa jako powłoka logowania,~/.bash_profile
dostanie pozyskiwane.Ważne, aby pamiętać:
To, o czym mówiłem do tej pory, dotyczy tylko samego Basha, gdy logujesz się do systemu z GUI, menedżer wyświetlania jest odpowiedzialny za pozyskiwanie odpowiednich plików.
Ubuntu używa
gdm3
jako menedżera wyświetlania, jeśli spojrzymy na:/etc/gdm3/Xsession
możemy zobaczyć, że żaden z plików nie zostanie pozyskany, z wyjątkiem.profile
:więc jeśli używasz GUI do logowania, zachowaj plik pod
.profile
nazwą, w przeciwnym razie możesz przegapić niektóre zmienne i ustawienia w swoich środowiskach.Wydaje mi się, że lepszym rozwiązaniem jest utworzenie dowiązania symbolicznego do
.profile
:Teraz Twoje dane żyją
.profile
,gdm
niczego nie umkną, ładują.bash_profile
się w rzeczywistości.profile
, a edycja każdego z nich daje ten sam wynik.Brakuje .profile?
Jeśli nie masz,
.profile
pobierz jego kopię tutaj:lub
źródło
man bash
na Ubuntu nadal opisuje, jak będzie najpierw szukać .bash_profile..bash_profile
Najpierw szuka, nie może go znaleźć (ponieważ nie istnieje), a następnie.bash_login
nie może go znaleźć ponownie (ponieważ Ubuntu nie używa tych dwóch nazw), w końcu szuka.profile
i tak, jest. Więc jeśli tworzysz.bash_profile
w~
, to zastępujesz ubuntu~/.profile
, jest to domyślne zachowanie bash, nic tu nie zostało zmodyfikowane..bash_profile
, nie jest on czytany. Właśnie zdałem sobie sprawę, że dzieje się tak, ponieważ Ubuntu nie używa już „Bash” jako powłoki logowania GUI. Zamiast tego używa „Dash”. Myślę, że jest to prawdą od około 18.04.Oznacza to, że plik nie istnieje. Ale możesz utworzyć plik i wykonać
bash
/ źródła plik, jeślibash
jest wywoływany jako powłoka logowania. Dlatego za każdym razem logujesz się przez powłokę (na przykład przezssh
).Jeśli chcesz, aby treść była wykonywana za każdym razem, gdy otwierasz terminal, powinieneś
.bashrc
zamiast tego zmodyfikować plik.źródło
/etc/skel/
katalogu..bash_profile
w Ubuntu brakuje komentarzy (i nie działa) w komentarzach do innych odpowiedzi.Najlepsza odpowiedź do użycia
~/.profile
zamiast~/.bash_profile
nie działała dla mnie.Modyfikacja
.bashrc
zadziałałaWłaśnie:
Uwaga: używam Ubuntu WSL.
źródło
~/.profile
po prostu nie ładuje się domyślnie w Ubuntu 18.04Jeśli masz na myśli .bashrc, znajdziesz go w swoim katalogu domowym. Jeśli go nie ma, możesz skopiować go z folderu / etc / skel do folderu domowego.
Jeśli potrzebujesz więcej informacji na ten temat, odwiedź stronę Stefan Lippens.
http://stefaanlippens.net/bashrc_and_others
źródło