Używam iTerm w Mac OS X 10.6. Wygląda na to, że kiedy otwieram iTerm, ani .bashrcnie .bash_profilejest pozyskiwane. Mogę powiedzieć, ponieważ zdefiniowane aliasy .bashrcnie są ustawione. Jak naprawić?
To, co się dzieje, jest ~/.bash_profilewywoływane najpierw przez bash, co oznacza zwarcie w instrukcjach, które masz ~/.bashrc. Ten problem może się zdarzyć nieoczekiwanie, jeśli nieuczciwy program doda kilka instrukcji do twojego, ~/.bash_profilegdy wcześniej plik nie istniał, i umieściłeś wszystkie swoje polecenia bash w ~/.bashrc. Rozwiązaniem jest usunięcie twojego ~ / .bash_profile lub posiadanie źródła ~ / .bash_profile twojego ~ / .bashrc. Można to zrobić, dodając polecenie: source ~/.bashrcdo końca ~/.bash_profilei restartując terminal.
Eric Leschinski
Odpowiedzi:
49
Bash będzie pobierał EITHER .bash_profile lub .bashrc, w zależności od tego, jak zostanie wywołany. Jeśli jest to powłoka logowania, Bash szuka ~ / .bash_profile, ~ / .bash_login, lub ~ / .profile, w tej kolejności, i źródeł pierwszego znalezionego (i tylko tego). Jeśli nie jest to powłoka logowania, ale jest interaktywna (jak większość sesji terminalowych), Bash pobierze ~ / .bashrc.
Prawdopodobnie iTerm szuka ~ / .bashrc. Jeśli jest skonfigurowany do uruchamiania jako powłoka logowania, będzie szukał ~ / .bash_profile. To prawie na pewno błąd w pliku konfiguracyjnym, a nie to, że powłoka go nie pozyskuje.
Umieściłbym linię na początku każdego pliku. Na górze ~ / .bash_profile:
export BASH_CONF="bash_profile"
A na górze ~ / .bashrc:
export BASH_CONF="bashrc"
Następnie otwórz nowy iTerm i wpisz
$ echo $BASH_CONF
To powinno potwierdzić, że plik jest pozyskiwany i możesz zajrzeć do składni pliku.
Ustawienie innej zmiennej środowiskowej dla każdego pliku źródłowego pozwala uzyskać więcej informacji, tzn. Jeśli pozyskiwany jest więcej niż jeden plik, będziesz o tym wiedział, tylko ostatni (jeśli nie jest to zamówienie).
kmarsh
To nadal nie ładuje pliku .bashrc. Musiałem dodać źródło ~ / .bashrc do moich preferencji iTerm i Terminal. btw Używam Mac OS X 10.9.5.
Giant Elk
Właśnie dodałem plik .profile, który automatycznie działa w systemie OS X 10.9.5, nie zakłócając preferencji terminala.
Olbrzymi Łoś
1
Dowiedziałem się, że jest to powłoka logowania, przechodząc do preferencji -> profile -> wybrano powłokę ogólną i powłokę logowania pod poleceniem. Ważny na MacOS El Capitan i iTerm2 3.0.14
Aditya
Rozwiązanie tutaj nie zadziałało, ale znalazłem rozwiązanie. Na początku nie było bashrc ani żadnego bash_profile. Odpowiedź tutaj proponuje utworzenie bashrc. Zamiast tworzyć plik bashrc stworzyłem plik bash_profile, który zadziałał. Teraz muszę zrozumieć, dlaczego bashrc nie został wykonany i bash_profile tak.
kalmanIsAGameChanger
67
W iTerm2 żadne z tych rozwiązań nie działało dla mnie. Udało mi się go poprawnie odczytać w pliku .bashrc, dodając polecenie
source ~/.bashrc
do pola Wyślij tekst przy starcie: Ustawienia / Ogólne dla mojego profilu iTerm.
Co się stało, gdy zrobiłeś to, co sugeruje zaakceptowana odpowiedź? Brak wyjścia?
Daniel Beck
Dobrze. Nie mam wyjścia, a iTerm 2 właśnie załadował domyślną powłokę bashową bez żadnego z moich aliasów.
Mark Struzinski
Ta odpowiedź została złamana aż do teraz - drugi fragment miał wejść do środka ~/.bashrc. Edytowałem to.
Daniel Beck
Używam ZSH i miałem ten sam problem. Z wyjątkiem tego, że żaden z moich plików konfiguracyjnych nie istniał w pierwszej kolejności i musiał zostać utworzony. Korzystałem z tej odpowiedzi i ustawiłem opcję „Wyślij tekst na początku”, ale po ponownym uruchomieniu ZSH utworzyłem plik .zsh i nadpisałem plik, udało mi się usunąć „Wyślij tekst na początku” i dodać moje konfiguracje do nowo wygenerowanego pliku. Nie jestem pewien, czy to pomaga komukolwiek
Arnolio
Myślałem, że to jest mój problem ... a potem po drodze zdałem sobie sprawę, że mój katalog domowy nie był folderem, w którym zacząłem .. więc gdy przeniosłem mój plik .bash_profile do innej lokalizacji i pomyślałem, że jestem ln -s (dowiązanie symboliczne z mojego katalogu ~ (home) w rzeczywistości dodałem dowiązanie symboliczne w niewłaściwym folderze, dodając to w przypadku, gdy pomaga komuś innemu, kto poszedł na tę odpowiedź.
Alisso
21
Zastanawiam się, czy naprawdę używasz Bash? Może możesz użyć echo $SHELL, jest całkiem możliwe, że używasz zsh , czy zainstalowałeś na-my-zh ?
Zazwyczaj napotykam ten sam problem, co ja, naprawiam go, konfigurując ~ / .zshrc zamiast tego ~ / .bash_profile dla powłoki logowania lub ~ / .bashrc dla powłoki bez logowania.
Moje doświadczenie mówi, że nie chcesz pobierać jednego pliku .bashx z innego, są one oddzielne z jakiegoś powodu :) Jeśli coś robisz, to coś jest nie tak
Alexander Mills
@AlexanderMills Powodem, dla którego te pliki istnieją, jest to, że Mac zgrał je prosto z Uniksa. Nie ma powodu, aby wszystkie nie były ładowane dla użytkownika.
RaisinBranCrunch
możesz wywoływać okrężne wywołania, jeśli się ładują, to jest problem, najlepszym sposobem na uniknięcie tego jest przełączenie logicznej zmiennej env i załadowanie innych plików tylko wtedy, gdy wartość logiczna nie jest ustawiona.
Umieść definicje swojego aliasu w pliku profilu bash, musisz utworzyć plik, ale zostanie on automatycznie wygenerowany. Tworzę osobny plik o nazwie alias.configuration i źródło go w .bash_profile tylko dlatego, że mam zdefiniowanego innego użytkownika i chcę mieć ten sam zestaw aliasów.
Głosowałem za tą odpowiedzią, ponieważ wydaje się, że jest to jedyna odpowiedź potwierdzająca, że w OS X, w pewnym momencie bash będzie pobierał „.bash_rc” zamiast „.bashrc”. Przyjechałem tu tylko dlatego, że próbowałem dowiedzieć się, dlaczego (i nadal nie wiem).
Marnix A. van Ammers
0
W iTerm2 upewnij się, że używasz „powłoki logowania” zamiast polecenia niestandardowego, w tym „logowania”, które nie spełnia oczekiwań.
do początku /etc/profile. To daje konto wiersz po wierszu wszystko, co zostanie wykonane, gdy bashrozpoczyna się, w tym plików pochodzących od wewnątrz /etc/profile, ~/.bash_profileitp Jest to trochę trudne, jeśli nie rozumieją bashwłączony bardzo dobrze, ale może być w stanie sprawdzić, czy Wystąpił błąd w pliku startowym, a dane wyjściowe będą przydatne dla kogoś, kto biegle bashpomoże Ci zlokalizować problem.
Możesz usunąć set -xlinię, gdy skończysz rozwiązywać problemy.
(1 co? (2) Jeśli bashzawsze uciekasz zsh, to nie jest to, czego wszyscy oczekują.
Scott
Jeśli ustawię / bin / bash --login, nie zapewni on żadnych funkcji zsh. Następnie, jeśli zmienię go na preferencję loginshell, nie będzie on czytał .bash_profile. Za każdym razem muszę uruchomić source ~/.bash_profileręcznie. @Scott Po wykonaniu powyższych czynności, mam zsh w wymagany sposób.
muhammed basil
(1) Chodzi mi o to, że zshmoże to być to, czego pragniesz , ale nie jest to wymagane ani zadawane przez to pytanie, które jest oznaczone [bash] i nic o nim nie mówi zsh. (2) Jeśli zdefiniujesz aliasy i funkcje powłoki i ustawisz zmienne (bez ich eksportowania) w swoim .bashrci / lub .bash_profile, czy są one dostępne dla ciebie w zshpowłoce?
~/.bash_profile
wywoływane najpierw przez bash, co oznacza zwarcie w instrukcjach, które masz~/.bashrc
. Ten problem może się zdarzyć nieoczekiwanie, jeśli nieuczciwy program doda kilka instrukcji do twojego,~/.bash_profile
gdy wcześniej plik nie istniał, i umieściłeś wszystkie swoje polecenia bash w~/.bashrc
. Rozwiązaniem jest usunięcie twojego ~ / .bash_profile lub posiadanie źródła ~ / .bash_profile twojego ~ / .bashrc. Można to zrobić, dodając polecenie:source ~/.bashrc
do końca~/.bash_profile
i restartując terminal.Odpowiedzi:
Bash będzie pobierał EITHER .bash_profile lub .bashrc, w zależności od tego, jak zostanie wywołany. Jeśli jest to powłoka logowania, Bash szuka ~ / .bash_profile, ~ / .bash_login, lub ~ / .profile, w tej kolejności, i źródeł pierwszego znalezionego (i tylko tego). Jeśli nie jest to powłoka logowania, ale jest interaktywna (jak większość sesji terminalowych), Bash pobierze ~ / .bashrc.
Prawdopodobnie iTerm szuka ~ / .bashrc. Jeśli jest skonfigurowany do uruchamiania jako powłoka logowania, będzie szukał ~ / .bash_profile. To prawie na pewno błąd w pliku konfiguracyjnym, a nie to, że powłoka go nie pozyskuje.
Umieściłbym linię na początku każdego pliku. Na górze ~ / .bash_profile:
A na górze ~ / .bashrc:
Następnie otwórz nowy iTerm i wpisz
To powinno potwierdzić, że plik jest pozyskiwany i możesz zajrzeć do składni pliku.
źródło
W iTerm2 żadne z tych rozwiązań nie działało dla mnie. Udało mi się go poprawnie odczytać w pliku .bashrc, dodając polecenie
do pola Wyślij tekst przy starcie: Ustawienia / Ogólne dla mojego profilu iTerm.
źródło
~/.bashrc
. Edytowałem to.Zastanawiam się, czy naprawdę używasz Bash? Może możesz użyć
echo $SHELL
, jest całkiem możliwe, że używasz zsh , czy zainstalowałeś na-my-zh ?Zazwyczaj napotykam ten sam problem, co ja, naprawiam go, konfigurując ~ / .zshrc zamiast tego ~ / .bash_profile dla powłoki logowania lub ~ / .bashrc dla powłoki bez logowania.
Może spróbujesz
źródło
Na moim komputerze 10.6
~/.profile
jest pozyskiwany. Więcsource .bashrc
wpis~/.profile
powinien wykonać zadanie.źródło
Łatwa naprawa.
1. Otwórz
~/.zshrc
plik2. Dodaj następujący wiersz na końcu pliku.
źródło
Na mojej maszynie 10.9 pochodzi / / .bash_profile. Więc źródłowy wpis .bashrc w ~ / .bash_profile powinien wykonać zadanie.
źródło
Umieść definicje swojego aliasu w pliku profilu bash, musisz utworzyć plik, ale zostanie on automatycznie wygenerowany. Tworzę osobny plik o nazwie alias.configuration i źródło go w .bash_profile tylko dlatego, że mam zdefiniowanego innego użytkownika i chcę mieć ten sam zestaw aliasów.
źródło
.bashrc
nie.bash_profile
są one pozyskiwane.Na 10.10 i iTerm2 2.0, niestandardowy profil
źródło
W iTerm2 upewnij się, że używasz „powłoki logowania” zamiast polecenia niestandardowego, w tym „logowania”, które nie spełnia oczekiwań.
źródło
Dodaj
do początku
/etc/profile
. To daje konto wiersz po wierszu wszystko, co zostanie wykonane, gdybash
rozpoczyna się, w tym plików pochodzących od wewnątrz/etc/profile
,~/.bash_profile
itp Jest to trochę trudne, jeśli nie rozumiejąbash
włączony bardzo dobrze, ale może być w stanie sprawdzić, czy Wystąpił błąd w pliku startowym, a dane wyjściowe będą przydatne dla kogoś, kto bieglebash
pomoże Ci zlokalizować problem.Możesz usunąć
set -x
linię, gdy skończysz rozwiązywać problemy.źródło
Wprowadź następującą zmianę, a iTerm będzie pobierać bashrc
iTerm> Preferencje> Ogólne> [x] Polecenie: / bin / bash
źródło
Połączyłem razem kilka rozwiązań, aby działać zgodnie z oczekiwaniami.
.bash_profile
źródło i uruchom na zsh.Preferences -> Profiles -> General
.Wybierz polecenie Polecenie.
I dodaj w polu tekstowym
/bin/bash --login
.Następnie w linii dodawania .bash_profile
/bin/zsh --login
to jest to!
źródło
bash
zawsze uciekaszzsh
, to nie jest to, czego wszyscy oczekują.source ~/.bash_profile
ręcznie. @Scott Po wykonaniu powyższych czynności, mam zsh w wymagany sposób.zsh
może to być to, czego pragniesz , ale nie jest to wymagane ani zadawane przez to pytanie, które jest oznaczone [bash] i nic o nim nie mówizsh
. (2) Jeśli zdefiniujesz aliasy i funkcje powłoki i ustawisz zmienne (bez ich eksportowania) w swoim.bashrc
i / lub.bash_profile
, czy są one dostępne dla ciebie wzsh
powłoce?