.bashrc nie pochodzi z iTerm + Mac OS X


57

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


2
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.


1
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.

wprowadź tutaj opis obrazu


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.

Może spróbujesz


1
Ciekawe sugestie, chociaż to pytanie ma 3 lata i ma zaakceptowaną odpowiedź.
Tyson

12

Na moim komputerze 10.6 ~/.profilejest pozyskiwany. Więc source .bashrcwpis ~/.profilepowinien wykonać zadanie.


Pracowałem dla mnie na Mac OS El Capitan.
user674669

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.
Alexander Mills

7

Łatwa naprawa.

1. Otwórz ~/.zshrcplik

2. Dodaj następujący wiersz na końcu pliku.

source ~/.bash_profile

1
Znakomity! To zrobiło to dla mnie. Nigdy nie przyszło mi do głowy, że po zainstalowaniu Oh-my-zh przeszkadza mi zsh.
Cindy Conway

5

Na mojej maszynie 10.9 pochodzi / / .bash_profile. Więc źródłowy wpis .bashrc w ~ / .bash_profile powinien wykonać zadanie.


1

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.


1
Właściwie ani .bashrcnie .bash_profilesą one pozyskiwane.
Computist

1

Na 10.10 i iTerm2 2.0, niestandardowy profil

  • .bash_rc powinien działać.
  • .bash_profile, spróbuj „/ bin / bash --login” zamiast „/ bin / bash”

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ń.


Co właściwie robi polecenie iTerm2?
studgeek

0

Dodaj

set -x

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.


0

Wprowadź następującą zmianę, a iTerm będzie pobierać bashrc

iTerm> Preferencje> Ogólne> [x] Polecenie: / bin / bash


-1

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!


(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?
Scott
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.