.bashrc wurde nicht in iTerm + Mac OS X bezogen


62

Ich verwende iTerm unter Mac OS X 10.6. Wenn ich iTerm öffne, scheint es, dass weder eine Quelle .bashrcnoch eine Quelle vorhanden .bash_profileist. Ich kann sagen, weil die in definierten Aliase .bashrcnicht gesetzt sind. Wie repariert man?


2
Was geschieht, ist ~/.bash_profile, zuerst von der Bash aufgerufen zu werden, was bedeutet, dass die Anweisungen, die Sie haben, kurzgeschlossen werden ~/.bashrc. Dieses Problem kann unerwartet auftreten, wenn ein betrügerisches Programm Ihrer ~/.bash_profilezuvor nicht vorhandenen Datei Anweisungen hinzufügt und Sie alle Ihre bash-Befehle eingegeben haben ~/.bashrc. Die Lösung besteht darin, entweder Ihr ~ / .bash_profile zu löschen oder ~ / .bash_profile als Quelle für Ihr ~ / .bashrc zu verwenden. Dies kann durchgeführt werden, indem der Befehl hinzugefügt wird: source ~/.bashrcam Ende von ~/.bash_profileund das Terminal neu gestartet wird.
Eric Leschinski

Antworten:


53

Bash gibt entweder .bash_profile oder .bashrc aus, je nachdem, wie es aufgerufen wird. Wenn es sich um eine Anmeldeshell handelt, sucht Bash in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login oder ~ / .profile und gibt die erste Quelle an, die er findet (und nur diese). Wenn es keine Anmeldeshell ist, aber interaktiv (wie die meisten Terminalsitzungen), gibt Bash ~ / .bashrc aus.

Wahrscheinlich sucht iTerm nach ~ / .bashrc. Wenn es so konfiguriert ist, dass es als Anmeldeshell gestartet wird, sucht es nach ~ / .bash_profile. Es ist mit ziemlicher Sicherheit ein Fehler in der Konfigurationsdatei, anstatt dass die Shell ihn nicht bezieht.

Ich würde am Anfang jeder Datei eine Zeile einfügen. Oben in ~ / .bash_profile:

export BASH_CONF="bash_profile"

Und oben in ~ / .bashrc:

export BASH_CONF="bashrc"

Dann öffne ein neues iTerm und tippe

$ echo $BASH_CONF

Das sollte bestätigen, dass die Datei bezogen wird, und Sie können die Syntax der Datei überprüfen.


2
Wenn Sie für jede Quelldatei eine andere Umgebungsvariable festlegen, erhalten Sie weitere Informationen. Wenn also mehrere Dateien vorhanden sind, wissen Sie, dass dies nur die letzte ist (sofern nicht die Reihenfolge angegeben ist).
kmarsh

Die .bashrc-Datei wird immer noch nicht geladen. Ich musste source ~ / .bashrc zu meinen iTerm- und Terminal-Einstellungen hinzufügen. Übrigens verwende ich Mac OS X 10.9.5.
Giant Elk

Ich habe gerade eine .profile-Datei hinzugefügt, die unter OS X 10.9.5 automatisch funktioniert, ohne dass Sie Ihre Terminaleinstellungen ändern müssen.
Giant Elk

1
Ich fand heraus, dass es sich um eine Anmeldeshell handelt, indem ich zu Einstellungen -> Profile -> Allgemein gehe und unter Befehl die Anmeldeshell auswähle. Gültig für MacOS El Capitan und iTerm2 3.0.14
Aditya

Die Lösung hier hat bei mir nicht funktioniert, aber ich habe eine Lösung gefunden. Am Anfang gab es kein bashrc und kein bash_profile. Die Antwort hier schlägt vor, einen bashrc zu erstellen. Anstatt eine bashrc-Datei zu erstellen, habe ich ein bash_profile erstellt, und es hat funktioniert. Jetzt muss ich verstehen, warum der bashrc nicht ausgeführt wurde und das bash_profile ja.
kalmanIsAGameChanger

68

In iTerm2 hat keine dieser Lösungen für mich funktioniert. Ich konnte meine .bashrc-Datei ordnungsgemäß lesen, indem ich den Befehl hinzufügte

source ~/.bashrc 

zum Feld Text beim Start senden: in Einstellungen / Allgemein für mein iTerm-Profil.

Bildbeschreibung hier eingeben


Was ist passiert, als du getan hast, was die akzeptierte Antwort nahelegt? Keine Leistung?
Daniel Beck

Richtig. Ich habe keine Ausgabe erhalten und iTerm 2 hat nur die Standard-Bash-Shell mit keinem meiner Aliase geladen.
Mark Struzinski

Diese Antwort war bis jetzt gebrochen - das zweite Snippet sollte hineingehen ~/.bashrc. Bearbeitet es.
Daniel Beck

Ich benutze ZSH und hatte das gleiche Problem. Außer dass keine meiner Konfigurationsdateien existierte und erstellt werden musste. Ich habe diese Antwort verwendet und "Text beim Start senden" eingestellt. Als ich ZSH neu startete und die .zsh-Datei erstellte und meine Datei überschrieb, konnte ich den "Text beim Start senden" entfernen und meine Configs zur neu generierten Datei hinzufügen. Nicht sicher, ob dies jemandem hilft
Arnolio

Ich dachte, dies sei mein Problem. Dann wurde mir auf dem Weg klar, dass mein Home-Katalog nicht der Ordner war, in dem ich angefangen hatte. Als ich mein .bash_profile an einen anderen Ort verlegte und dachte, ich wäre in -s Aus meinem ~ (Heim-) Katalog habe ich tatsächlich einen Symlink in den falschen Ordner
eingefügt

23

Ich frage mich nur, ob du Bash wirklich benutzt? echo $SHELLMöglicherweise können Sie verwenden , es ist durchaus möglich, dass Sie zsh verwenden . Haben Sie on-my-zh installiert ?

Tatsächlich stoße ich auf dasselbe Problem wie Sie. Ich behebe es, indem ich stattdessen ~ / .zshrc entweder ~ / .bash_profile für die Anmeldeshell oder ~ / .bashrc für die Nicht-Anmeldeshell konfiguriere .

Vielleicht kannst du es versuchen


1
Interessanter Vorschlag, obwohl diese Frage 3 Jahre alt ist und eine akzeptierte Antwort hat.
Tyson

12

Auf meinem 10.6 Rechner ~/.profileist Sourcing. Also sollte ein source .bashrcEintrag in ~/.profileden Job erledigen.


Arbeitete für mich auf Mac OS El Capitan.
user674669

Meiner Erfahrung nach möchten Sie eine .bashx-Datei nicht von einer anderen Quelle beziehen, sie sind aus einem bestimmten Grund getrennt :) Wenn Sie das tun, stimmt etwas nicht
Alexander Mills

@AlexanderMills Der Grund, warum diese Dateien existieren, ist, dass Mac sie direkt aus Unix herausgerissen hat. Es gibt keinen Grund, warum sie nicht alle für einen Benutzer geladen werden sollten.
RaisinBranCrunch

Sie können zirkuläre Aufrufe erhalten, wenn sie sich gegenseitig laden. Dies ist das Problem. Der beste Weg, dies zu vermeiden, besteht darin, einen Booleschen Wert mit einer env var zu spiegeln und die anderen Dateien nur zu laden, wenn der Boolesche Wert nicht festgelegt ist.
Alexander Mills

8

Einfache Lösung.

1. Öffnen Sie Ihre ~/.zshrcDatei

2. Fügen Sie am Ende der Datei die folgende Zeile hinzu.

source ~/.bash_profile

1
Brillant! Das hat es für mich getan. Mir ist nie in den Sinn gekommen, dass zsh im Weg ist, nachdem ich Oh-my-zh installiert habe.
Cindy Conway

6

Auf meinem 10.9-Rechner wurde ~ / .bash_profile bezogen. Daher sollte ein .bashrc-Quelleneintrag in ~ / .bash_profile die Aufgabe übernehmen.


1

Fügen Sie Ihre Alias-Definitionen in die Bash-Profildatei ein. Sie müssen die Datei erstellen, sie wird jedoch automatisch bezogen. Ich erstelle eine separate Datei mit dem Namen alias.configuration und füge sie in .bash_profile ein, nur weil ich einen anderen Benutzer definiert habe und denselben Alias ​​festlegen möchte.


1
Eigentlich sind weder .bashrcnoch .bash_profilebeschafft.
Computist

1

Hinzufügen

set -x

zum anfang von /etc/profile. Dies gibt Ihnen ein Zeile- für -Zeile - Konto von allem, was ausgeführt wird , wenn bashstartet, einschließlich Dateien aus Quellen innerhalb /etc/profile, ~/.bash_profileetc. Es ist ein bisschen entmutigend , wenn Sie nicht verstehen , bashScripting sehr gut, aber man kann in der Lage sein zu sehen , ob In einer Startdatei ist ein Fehler aufgetreten, und die Ausgabe ist hilfreich bash, damit Sie Ihr Problem leichter finden können.

Sie können die set -xLeitung entfernen , wenn Sie mit der Fehlerbehebung fertig sind.


1

Auf 10.10 und iTerm2 2.0 angepasstes Profil

  • .bash_rc sollte funktionieren.
  • .bash_profile, versuche "/ bin / bash --login" anstelle von "/ bin / bash"

Ich habe für diese Antwort gestimmt, weil es anscheinend die einzige ist, die bestätigt, dass in OS X irgendwann Bash ".bash_rc" anstelle von ".bashrc" verwendet. Ich bin nur hergekommen, weil ich versucht habe herauszufinden, warum (und ich weiß es immer noch nicht).
Marnix A. van Ammers

0

Stellen Sie in iTerm2 sicher, dass Sie "login shell" anstelle eines benutzerdefinierten Befehls einschließlich "login" verwenden, der nicht das tut, was Sie erwarten.


Was macht der iTerm2-Befehl eigentlich?
Studgeek

0

Nehmen Sie die folgende Änderung vor und iTerm wird bashrc beziehen

iTerm> Einstellungen> Allgemein> [x] Befehl: / bin / bash


0

Das Problem kann behoben werden, indem die folgende Zeile in / etc / bashrc eingefügt wird

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"


-1

Ich kombinierte paar Lösungen, um es wie erwartet zu funktionieren.

.bash_profile quelle und laufe auf zsh.

Preferences -> Profiles -> General .

Wählen Sie Befehl unter Befehl.
Und in das Textfeld hinzufügen /bin/bash --login.

Dann in .bash_profile Zeile hinzufügen /bin/zsh --login

Das ist es.


(1 Was? (2) Wenn Sie bashimmer gelaufen zshsind, ist das nicht das, was irgendjemand erwartet.
Scott

Wenn ich / bin / bash --login setze, werden keine Funktionen von zsh bereitgestellt. Wenn ich es dann nach Belieben in "loginshell" ändere, wird ".bash_profile" nicht gelesen. Immer wenn ich source ~/.bash_profilemanuell laufen muss. @Scott Nachdem ich die oben genannten Dinge getan habe, habe ich zsh in der erforderlichen Weise.
Muhammed Basilikum

(1) Mein Punkt ist, dass es zshvielleicht das ist, was Sie wünschen , aber es wird von dieser Frage, die mit [bash] markiert ist und nichts darüber sagt, nicht verlangt oder verlangt zsh. (2) Wenn Sie in Ihrem .bashrcund / oder Aliase und Shell-Funktionen definieren und Variablen setzen (ohne sie zu exportieren) .bash_profile, stehen sie Ihnen in Ihrer zshShell zur Verfügung?
Scott
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.