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