Nie mogę znaleźć .bash_profile
w Ubuntu 14.04 w moim /home/user
katalogu. Użyłem ls -a
polecenia, aby zobaczyć .bash_profile
, ale nie ma takiego pliku.
Nie mogę znaleźć .bash_profile
w Ubuntu 14.04 w moim /home/user
katalogu. Użyłem ls -a
polecenia, aby zobaczyć .bash_profile
, ale nie ma takiego pliku.
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:
cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
Więc użyj ~/.profile
zamiast~/.bash_profile
vim ~/.bashrc
następnie. ~/.bashrc
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_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:
mv ~/.profile ~/.bash_profile
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.
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
:
# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
if [ -f "$file" ]; then
source_with_error_check "$file"
fi
done
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
:
ln -s ~/.profile ~/.bash_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.
Jeśli nie masz, .profile
pobierz jego kopię tutaj:
cp /etc/skel/.profile ~/.profile
lub
# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
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śli bash
jest 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ś .bashrc
zamiast tego zmodyfikować plik.
/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ła
Właśnie:
vim ~/.bashrc
Uwaga: używam Ubuntu WSL.
~/.profile
po prostu nie ładuje się domyślnie w Ubuntu 18.04
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
.