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ć?

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


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.


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

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.