Wo finde ich die .bashrc-Datei unter Mac OS X Snow Leopard und Lion?

260387
Yuval

Ich möchte rvm auf meiner Snow Leopard-Maschine installieren.

Es besagt, dass ich meiner .bashrcDatei eine Zeile hinzufügen muss (ich verwende bash), aber wo ist meine .bashrcDatei?

84
Sie sollten Ihre Lösung in eine Antwort aufnehmen und sie akzeptieren (Sie müssen ein oder zwei Tage warten, bevor SU dies zulässt.) Auf diese Weise können Personen mit demselben Problem die Frage prüfen, dass sie eine Antwort hat. Nifle vor 14 Jahren 1
Seine Lösung unterscheidet sich nicht von der am besten bewerteten Antwort. David Cowden vor 12 Jahren 1
Um sicherzugehen, dass es sich hierbei nicht um ein "Linux = .bashrc vs. Mac OS =. (Bash_)" - Profil handelt, funktionieren die Shell-Startdateien auf Linux und Mac gleich und die .bashrc-Datei ist der geeignetere Ort für Session spezifische Einstellungen. Wenn Sie beispielsweise "tmux" oder "screen" verwenden, haben Sie möglicherweise keine Anmeldesitzungen, möchten aber trotzdem Ihre Aliase. Der Grund, warum Mac anders ist, besteht darin, dass die meisten Linux-Distributionen Systemprofil-Skripts oder Skeleton-Profile ausliefern, die bereits bashrc (Quelle) delegieren. eckes vor 7 Jahren 0

5 Antworten auf die Frage

75
Stefan Lasiewski

Regarding the problem with .bashrc above:

On most systems, ~/.bashrc is only used when starting an interactive non-login shell. However, when you start up a new shell it is often an interactive login shell. Since this is a login shell, the .bashrc is ignored. To keep the environment consistent between non-login and login shells, you must source the .bashrc from your .profile or your .bash_profile.

See the Bash Reference Manual, section 6.2 Bash Startup Files

Invoked as an interactive login shell, or with --login

When Bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Invoked as an interactive non-login shell

When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists.

So, typically, your ~/.bash_profile contains the line

 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 

after (or before) any login-specific initializations.

On my Mac (Running Leopard), there was no line to source ~/.bashrc. I had to add this functionality on my own.

On some systems and other OSes, .bashrc is sourced from the global /etc/profile or /etc/bash_profile, or is done using the template files from /etc/skel.

To be honest the distinction between .bashrc and .bash_profile is not well understood by the community. When many developers say "Add this to your .bashrc", what they really mean is "Add this to your .bash_profile". They want the functionality to be added to your login shell (which is .bash_profile), not to your non-login shell. In reality, it doesn't usually matter and placing configuration in .bashrc is acceptable.

Dieser Link gibt einen guten Überblick über die Arten von Shells und wann die Startdateien geladen werden - http://hacktux.com/bash/bashrc/bash_profile studgeek vor 12 Jahren 0
Was ist hier mit "bezogen" gemeint? elgrego vor 9 Jahren 0
@elgrego, hier ist eine gute Beschreibung: _Wenn eine Datei beschafft wird (indem Sie entweder den Quelldateinamen oder den Dateinamen in die Befehlszeile eingeben), werden die Codezeilen in der Datei so ausgeführt, als ob sie in der Befehlszeile gedruckt würden._ Siehe http : //www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html Stefan Lasiewski vor 9 Jahren 0
57
Yuval

Es stellt sich also heraus, dass unter Mac OS X Snow Leopard sowie Mac OS X Lion die geladene Datei .profilenicht aufgerufen wird .bashrc.

Sie möchten eine Datei erstellen ~/.profileund diese als .profile bezeichnen (falls noch nicht vorhanden).

Fügen Sie dort mit jeder Instanz von bash die Informationen ein, die Sie zum Laden benötigen (Danke, thepurplepixel).

Ein paar Randnotizen:

  1. Der Punkt vor der Datei markiert sie standardmäßig als für den Finder und den Befehl ls unsichtbar. Um unsichtbare Dateien mit dem Befehl ls von Terminal aufzulisten, verwenden Sie den -aParameter as als Parameter:ls -a
  2. Das ~Symbol steht dort, /Users/YourUserNamewo YourUserName der Kurzname Ihres Benutzernamens ist.

Edit: Chris Page stellt (richtig) fest, dass das, was Sie in einer .profile-Datei ablegen, auf die von Ihnen verwendete Shell angewendet wird (z. B. zhs, bash und so weiter). Wenn Sie möchten, dass sich der Inhalt nur auf die Bash-Shell auswirkt, platzieren Sie den Inhalt in eine .bash_profileDatei statt in eine .profileDatei.

Ihre Frage wurde am 1. Juni 2010 [richtig] beantwortet - einen Tag nachdem Sie sie gefragt haben. Über ein Jahr später kommst du zurück und gibst genau dieselbe Antwort und akzeptierst deine eigene Antwort ... David Cowden vor 12 Jahren 5
Tatsächlich fügt seine Antwort mehr Details hinzu als die Antwort vom 1. Juni 2010. Er spricht speziell das Problem unter Mac OS X an, das ich als hilfreich empfunden habe. webworm vor 11 Jahren 3
Wenn bereits ein `.bash_profile` in Ihrem Home-Verzeichnis vorhanden ist, wird die` .profile'-Datei nicht gelesen! Phani vor 10 Jahren 3
Ich habe eine Neuinstallation von Mac Os El capitan. Es gibt keine * Profil * -Datei. Erstellen Sie einfach eine .profile-Datei und es funktioniert. Ich habe meine .bashrc persönlich in .profile umbenannt. Nicolas Thery vor 8 Jahren 0
4
squircle

You have to make your own .bashrc. You can simply use a text editor to make a file called .bashrc (no extension) with the contents you want and save it in your home directory (/Users/YourUserName/).

Eigentlich hat das nicht funktioniert, aber Sie haben mich in die richtige Richtung geschickt, indem Sie mir sagten, ich solle meine eigene Datei erstellen. Die Datei, die in einer Snow Leopard-Konfiguration funktionierte, war .profile und nicht .bashrc (die aus irgendeinem Grund nicht in diesem Betriebssystem geladen wurde). Ich werde detaillierte Anweisungen in der Frage posten. Vielen Dank! Yuval vor 14 Jahren 1
@Yuval: Standardmäßig funktioniert ein `.bashrc`, aber * nur, wenn es kein` .profile` gibt. * Ich denke, ~ / .profile` ist jedoch standardmäßig vorhanden. Froh, dass ich helfen konnte! (Und Sie sollten Ihre Lösung in eine Antwort stellen und sie für zukünftige Leser dieser Frage akzeptieren). squircle vor 14 Jahren 0
Ich denke, Ihr Kommentar zu * nur, wenn es keine .profile * gibt, ist falsch. .bashrc funktioniert in einer interaktiven Shell ohne Login oder wenn sie von .profile stammt (.bash_profile ist wahrscheinlich ein besserer Ort, da .profile für die Bourne-Shell ist). .profile wird während einer interaktiven Shell ohne Login verwendet. Stefan Lasiewski vor 14 Jahren 0
@Stefan Das hört sich also richtig an. Ich bin kein Experte :) squircle vor 14 Jahren 0
Niemand ist ;). Dieses Zeug (.bashrc vs .profile vs. .bash_profile vs. .bash_login vs. interaktive Login-Shell vs. interaktive Nicht-Login-Shell vs. nicht-interaktive Shell) ist verwirrend und wird durch viele Unixe und Shell-Skripts gebrochen und überschrieben. Stefan Lasiewski vor 14 Jahren 2
Ich habe es gerade ohne .profile ausprobiert, wird aber in neuen Terminalsitzungen immer noch nicht verwendet. wonton vor 9 Jahren 0
3
geekborj

Ich finde, dass in meinem Betriebssystem 10.6.5 die Bash-Einstellungen in "/ etc / bashrc" sind. Ich denke, das ist die Toplevel-Spezifikation für Shell.

Sie benötigen jedoch ein Root-Konto, um es zu ändern. Die lokalen Benutzerspezifikationen "~ / .bashrc" sollten mit dem folgenden Snippet beginnen, um die Einstellungen auf Systemebene zu lesen und zu laden:

if [ -r /etc/bashrc ]; then . /etc/bashrc  fi 

Normalerweise füge ich Aliasnamen in der bashrc auf Systemebene hinzu, damit auch alle Benutzer darauf zugreifen können. Es sei denn, sie möchten Ihre Abkürzungen und Aliase nicht verwenden.

Viel Glück!

/ etc / profile (ausgeführt von Login-Shells) ist ein globales Bash-Startskript, das für alle Benutzer gilt und Standardverhalten für Login-Shells bietet. Es führt wiederum / etc / bashrc aus, das Anpassungen enthält, die sowohl für Login-Shells als auch für nicht-Login-Shells gelten. In ähnlicher Weise sollten einzelne Benutzer eine Datei ~ / .bash_profile erstellen, in der ~ / .bashrc ausgeführt wird. Hier sollten die meisten Anpassungen vorgenommen werden, und ~ / .bashrc sollte / etc / bashrc ausführen, um das Standardverhalten für Shells ohne Login zu erben. Chris Page vor 13 Jahren 2
Für einzelne Benutzer ist es am besten, diese Anpassungen zu Ihrem Home-Verzeichnis unter `~ / .bashrc` hinzuzufügen, nicht unter` / etc / bashrc`. `/ etc / bashrc` sind die globalen Einstellungen für alle Benutzer Ihres Systems, die wahrscheinlich nicht Ihren Vorstellungen entsprechen. Möglicherweise kommt auch Apple vorbei und ändert regelmäßig `/ etc / bashrc`, wodurch Ihre Anpassungen zunichte gemacht werden. Stefan Lasiewski vor 9 Jahren 1
1
Sable

Use the .profile file to add anything that you would add to a linux .bashrc file.

For example

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH alias t='/Users/<username>/.todo/todo.sh' alias punch='python /Users/<username>/.todo/Punch.py' alias clock='cat </dev/tcp/time.nist.gov/13' alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 
Ich empfehle Ihnen, ~ / .bash_profile (anstelle von ~ / .profile) zu verwenden, es sei denn, Sie möchten sicher sein, dass Ihre Anpassungen in anderen Shells wirksam werden und dass sie kompatibel sind. Chris Page vor 13 Jahren 2
Um sicherzugehen, dass es sich hierbei nicht um ein "Linux = .bashrc vs. Mac OS =. (Bash_)" - Profil handelt, funktionieren die Shell-Startdateien auf Linux und Mac gleich und die .bashrc-Datei ist der geeignetere Ort für Session spezifische Einstellungen. Wenn Sie beispielsweise "tmux" oder "screen" verwenden, haben Sie möglicherweise keine Anmeldesitzungen, möchten aber trotzdem Ihre Aliase. Der Grund, warum Mac anders ist, besteht darin, dass die meisten Linux-Distributionen Systemprofil-Skripts oder Skeleton-Profile ausliefern, die bereits bashrc (Quelle) delegieren. eckes vor 7 Jahren 0