Jak utworzyć ~ / .bash_profile i ~ / .profile

25

Tak, nie mam .bash_profileani .profilew moim katalogu domowym. Jak je utworzyć? Co potem powinienem zrobić za każdym razem, gdy otwieram terminal, pliki te są czytane?

Thi G.
źródło

Odpowiedzi:

28

Możesz użyć touchpolecenia.

Na przykład,

cd ~

aby przejść do katalogu domowego.

Teraz utworzymy plik o nazwie .bash_profile(kropka oznacza, że ​​zostanie ukryty).

Następnie użyj nanolub viw terminalu. Jeśli nie wiesz, co to vijest, po prostu użyj nano. Aby otworzyć te pliki, użyj:

sudo nano .bash_profile

sudoupewnia się, że będziesz mógł zapisać te pliki. Tutaj możesz dodać aliases. nanolub viautomatycznie utworzy nowy plik, jeśli nie istnieje w bieżącym katalogu w terminalu.

Po zakończeniu naciśnij przycisk Ctrl+ O, Enteroraz Ctrl+ X, aby zapisać i zamknąć. Wreszcie użyj

source ~/.bash_profile

aby ponownie załadować Terminal, a on przeczyta, co umieściłeś w tych plikach.

Oczywiście możesz to także zmienić, jeśli chcesz. :)

Aby odpowiedzieć na ostatnie pytanie, pliki te będą automatycznie odczytywane przy każdym otwarciu terminalu. Jeśli jednak wystąpi błąd (na przykład nie umieszczaj spacji między aliasami), poinformuje o tym.

Więcej informacji

Jak zauważył George, .bash_profilebędzie działał tylko na powłokach logowania. W przypadku powłok niezalogowanych musisz utworzyć .bashrcplik z:

    sudo nano .bashrc

Spinki do mankietów

.bash_profile vs .bashrc

Znaczenie .bashrc

same ziemniaki
źródło
5
Dlaczego najpierw touchtworzysz puste pliki? nanoi tak robi to automatycznie.
nohillside
5
Ponadto prawdopodobnie nie chcesz mieć zarówno ~ / .profile, jak i ~ / .bash_profile - jeśli bash zobaczy plik .bash_profile, nie będzie to przeszkadzało .profile. Wreszcie będzie uruchamiany tylko dla powłok „login”; powłoki niezalogowane uruchamiają zamiast tego ~ / .bashrc. Zobacz poprzednie pytania SO tutaj i tutaj .
Gordon Davisson
@GordonDavisson czy dobrze jest mieć ~/.profilekopię ~/.bash_profile? A jeśli masz oba, co masz w środku ~/.profile, czego nie da się zrobić ~/.bash_profile?
Thi G.,
2
@ThiG: Nie chciałbym, żeby jeden był kopią drugiego; prawdopodobnie dodasz coś do jednego, zapomnisz dodać to do drugiego i się zdezorientujesz. Zapoznaj się z moimi zaleceniami dotyczącymi tego pytania SO, które uważam za najlepszą praktykę.
Gordon Davisson,
sudosprawi, że zepsujesz prawa użytkownika. Nie rób tego
Max Ried
2

Możesz skopiować te pliki z / etc / skel /, które są szkieletowymi plikami dla nowych użytkowników utworzonych przez polecenie takie jak useradd w dystrybucjach opartych na Debianie:

cp -nr /etc/skel/. ~/

Pliki te będą automatycznie ładowane przez powłokę za każdym razem, gdy się logujesz. Sposób ładowania tych plików profilu jest opisany na stronie podręcznika użytkownika powłoki. Jeśli używasz powłoki bash w specjalny sposób (np. Przez ssh, ansible itp.), Powinieneś użyć polecenia „bash -ilc”, które chcesz wykonać w ENV przygotowanym przez te pliki profilu „”. -i oznacza powłokę interaktywną, która jest często wymagana przez .bashrc -l powłokę logowania, która powoduje załadowanie pliku .profile (lub istnieje plik .bash_profile - patrz strona instrukcji bash), który następnie ładuje plik .bashrc

Juraj Michalak
źródło
0

Wolę używać edytorów tekstu GUI, takich jak BBEdit lub TextWrangler. Te edytory tekstu mogą obsługiwać niewidoczne pliki, takie jak .profile i .bash_profile, i mają tę zaletę, że posiadają interfejs GUI, w przeciwieństwie do nano, który jest interfejsem konsoli.

TextWrangler

BBEdit

Kaydell
źródło
0

Możesz także użyć edytora tekstu GUI, takiego jak TextEdit:

touch ~/.bash_profile
open -e ~/.bash_profile

open -ejest skrótem do open -a TextEdit.

Nie musisz koniecznie tworzyć .profile lub .bashrc. Terminal i iTerm 2 otwierają nowe powłoki jako powłoki logowania, więc bash nie czyta .bashrc. Jeśli istnieją zarówno .bash_profile, jak i .profile, bash czyta tylko .bash_profile, gdy jest wywoływany jako interaktywna powłoka logowania. .profile jest odczytywany przez ksh, gdy jest wywoływany jako interaktywna powłoka logowania i przez bash, gdy jest wywoływany jako sh jako interaktywna powłoka logowania.

Właściwie powiedziałem iTerm 2, aby otwierał nowe powłoki jako powłoki niezalogowane, a mój plik .bash_profile zawiera po prostu linię podobną do . ~/.bashrc. Tryb tmux i tryb powłoki w emacsie domyślnie otwierają nowe powłoki jako powłoki niezalogowane. .bash_profile jest nadal odczytywany, gdy ssh do mojego komputera.

Lri
źródło
Zobaczę, czy mam to ... Masz jedno ~/.bash_profilei drugie ~/.profile? I ty też masz ~/.bashrc?
Thi G.,
Nie mam .profile, a mój .bash_profile po prostu zawiera . ~/.bashrc.
Lri