Mac OS X .bashrc nie działa

77

Mam .bashrcplik jednowierszowy w moim katalogu domowym:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Ale to nie tworzy aliasu. Dlaczego to może być?

William Jockusch
źródło

Odpowiedzi:

101

W OSX .bash_profilejest używany zamiast .bashrc.

Tak, .bash_profileplik powinien znajdować się w /Users/YourName/
(Innymi słowy ~/.bash_profile)

Na przykład, /Users/Aaron/.bash_profile

Azz
źródło
11
To nie jest poprawna odpowiedź. Aliasy nie są dziedziczone, więc jeśli zdefiniujesz je tylko w .bash_profile, nie zostaną zdefiniowane w powłokach, które nie są zalogowane (np. Gdy uruchomisz bash w bash).
LaC
1
Lub można użyć bash_aliases, który ma taki sam efekt, jak wstawianie aliasów w bashrc, ale bardziej zarządzalny: ss64.com/osx/syntax-bashrc.html
Atul Ingle
4
w moim .bash_profile właśnie napisałem jedną linię do aliasu (swego rodzaju) bashrc ->source ~/.bashrc
Eric Hodonsky
86

.[bash_]profilei .bashrcmoże być używany zarówno w systemie OS X, jak i Linux. Pierwszy ładowany jest, gdy powłoka jest powłoką logowania; ten ostatni, kiedy tak nie jest. Prawdziwa różnica polega na tym, że Linux uruchamia powłokę logowania, gdy użytkownik loguje się do sesji graficznej, a następnie, gdy otwierasz aplikację terminalową, powłoki te nie są powłokami logowania; podczas gdy OS X nie uruchamia powłoki po logicznym logowaniu, a kiedy uruchamiasz powłokę z Terminal.app, jest to powłoka logowania.

Jeśli chcesz, aby aliasy działały zarówno w powłokach do logowania, jak i bez logowania (i zwykle tak robisz), powinieneś umieścić je w plikach .bashrc i źródłowym .bashrc w pliku .bash_profile, z następującym wierszem:

[ -r ~/.bashrc ] && source ~/.bashrc

Dotyczy to każdego systemu używającego bash.

Gumilaka
źródło
15
+1 z zastrzeżeniem, że wszystko w .bashrc zostanie ponownie uruchomione dla podpowłok (i subsub-, subsubsub- itp.), Więc np. PATH=$PATH:/my/private/binariesDoprowadzi do wzdęcia PATH. Zobacz to, aby obejść ten problem .
Gordon Davisson,
2
Prawdziwe. Ponieważ wyeksportowane zmienne instancji są dziedziczone, po prostu ustawiam je .profilezamiast .bashrc.
LaC
1
@LaC czy możesz wyjaśnić _ Ponieważ skoro wyeksportowane zmienne instancji są dziedziczone, ustawiłem je w .profile_…?
sam
1
@sam, nie wiem skąd pochodzi „instancja”. Miałem tylko na myśli „zmienne eksportowane”. Niestety nie mogę edytować tego komentarza.
LaC
2
@ dinozaur: „-r” sprawdza, czy plik jest czytelny.
mhvelplund
7

Lub utwórz link sym o nazwie .bash_profile wskazany na twój .bashrc

ln -s .bashrc .bash_profile
Barrett
źródło
2

Nie jest aliasowany, ponieważ .bash_profilejest używany zamiast .bashrcw Mac OS X.

Masz więc dwie opcje:

  • Umieść alias w swoim ~/.bash_profile

  • Lub źródło swojej .bashrcdostępne na Twoim koncie .bash_profileprzez dodanie tej linii do .bash_profile:

    . ~/.bashrc

Wuffers
źródło
1

W systemie Mac OS X Yosemite uruchom następujące polecenie:

vi ~/.profile

Następnie dodaj następujący wiersz:

source ~/.bashrc

Teraz zapisz i zamknij .profile, a następnie otwórz nowe okno terminala lub po prostu uruchom:

source ~/.profile

Zobacz także tę odpowiedź . Działa w wersji 10.10.3.

Ricardo
źródło
To niewiele więcej niż powtórzenie odpowiedzi sprzed czterech lat.
G-Man
Jasne, po prostu łatwy do przeczytania i zastosowania. Plus niewielki wkład - ponieważ inne wymienione pliki nie były dostępne w moim systemie operacyjnym Yosemite.
Ricardo