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

Computist
źródło
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.

jasne światło
źródło
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

Mark Struzinski
źródło
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

AaronChen
źródło
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.

sebastiangeiger
źródło
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
Manoj Shrestha
źródło
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.

Kit Ho
źródło
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.


źródło
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”
zmx
źródło
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ń.

Jerzy
źródło
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.

kupiec
źródło
0

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

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

jake
źródło
-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!

muhammed basil
źródło
(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