Was ist der Unterschied zwischen .profile und .bash_profile und warum habe ich keine .profile-Datei auf meinem System?

12

Ich bin also ziemlich neu in Linux und habe kürzlich Fedora 19 auf meinem Netbook installiert. Ich möchte ein tieferes Verständnis von Linux und der CLI haben und lese jetzt Learn Linux: The Hard Way .

In Übung 3 gibt der Autor folgende Befehle:

  • ls -al
  • Kat. Profil

Ich versuche diese Anweisungen zu befolgen, aber ohne Erfolg. In meinem Benutzernamenverzeichnis befindet sich keine .profile-Datei, wie ich aus ls -al ersehen kann. Nach dem, was ich gelernt habe, sind die Dateien .bash_profile und .profile praktisch gleich. Der einzige Unterschied, den ich aus meiner Forschung gezogen habe, ist, dass .bash_profile zuerst überprüft wird.

Was ich nicht verstehe ist, warum es unter Linux mehrere Dateien für dieselbe Funktion gibt, warum der Autor .profile und nicht .bash_profile verwendet (wenn ich das richtig verstehe, wird .profile nicht gelesen, wenn das System zuerst .bash_profile findet). und wie kommt es, dass ich die .profile-Datei nicht auf meinem System habe?

Emiroe
quelle
Siehe auch unix.stackexchange.com/questions/45684/…, das einen Teil Ihrer Frage beantwortet. Darüber hinaus zeigt unix.stackexchange.com/questions/67940/… einen der Gründe, warum diese verschiedenen Dateien zu Verwirrung bei fortgeschritteneren Dingen führen können, als Sie es wahrscheinlich noch tun.
Msw

Antworten:

13

Das .profilestammt aus der ursprünglichen Bourne-Shell, bekannt als sh. Da die GNU-Shell bash(abhängig von ihren Optionen) eine Obermenge der Bourne-Shell ist, können beide Shells dieselbe Startdatei verwenden. Vorausgesetzt, es werden nur shBefehle eingegeben.profile

Zum Beispiel aliasist ein gültiger eingebauter Befehl von bashaber unbekannt sh. Wenn Sie also nur eine .profilein Ihrem Home-Verzeichnis hätten und eine aliasErklärung darin ablegen shwürden , würden Sie sich beschweren. Es gibt also eine Bash-spezifische Datei mit Shell-Initialisierungsbefehlen, die Bash genau dann liest, wenn keine .profileDatei vorhanden ist.

Eigentlich ist das in einigen Installationen etwas zu einfach, und ich kenne Fedora nicht. Wird unter bash /etc/profilevon der Shell vor allen Dateien in Ihrem Home-Verzeichnis gelesen. Wenn es ein systemweites Initialisierungsskript gibt, sagt es oft so etwas wie

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Warum ist das so? Ein Versuch der Kompatibilität über Jahrzehnte von Shell-Dialekten. Warum ist das Tutorial so geschrieben? Die Bourne-Shell wird nicht mehr oft verwendet und einige Leute wissen nicht einmal, dass es eine andere Bourne-ähnliche Shell als Bash gibt. Selbst wenn die (eingeschränkte) Bourne-Syntax für eine bessere plattformübergreifende Kompatibilität verwendet wird, wird sie häufig von dashPOSIX ausgeführt oder im POSIX-Kompatibilitätsmodus ausgeführt. In der Tat ist die eigentliche Bourne-Shell-Quelle wahrscheinlich eine Copyright-Komponente von Unix System V, die derzeit Eigentum von Novell zu sein scheint, aber ich habe keine Ahnung, was sie damit machen, wenn überhaupt.

Verwenden Sie für den Anfänger einen $HOME/.profileoder $HOME/.bash_profilebeide, aber nicht beide, und alles wird gut. Da Sie bereits damit .bash_profilearbeiten, weil es möglicherweise systemspezifische Dinge enthält, die Ihre Installation benötigt.

msw
quelle
Vielen Dank! Ich denke, ich verstehe es jetzt ein bisschen besser, ich denke, es gibt noch viel zu lernen.
Emiroe
Vieles davon ist historischer Müll, den Sie wirklich nicht wissen müssen; Konzentriere dich nur auf den letzten Absatz meiner Antwort. Da Sie neu hier sind, können Sie auch eine Antwort, die die höchste Form des Dankes darstellt, positiv bewerten und akzeptieren.
Msw
Ja, ich habe Ihre Antwort bereits akzeptiert. Ich habe nicht erwartet, dass sich jemand so viel Mühe gibt, deshalb bin ich sehr dankbar. Ich habe Ihre Antwort akzeptiert, kann sie aber nicht bewerten, da sie 15 Ruf erfordert und ich nur 8 habe. Tut mir leid!
Emiroe
Ich habe das Limit von 15 Wiederholungen vergessen. Du hast Recht.
Msw
4
Geschichtsbonus Nr. 1 : Die wahre Bourne-Muschel entkam schließlich der Gefangenschaft. minnie.tuhs.org hat den vollständigen Quellcode von V7 (die erste Unix-Version mit der Bourne-Shell), und heirloom.sourceforge.net hat eine etwas neuere Version der Bourne-Shell, die tatsächlich noch verwendet werden kann. Verlaufsbonus Nr. 2 : aliasWird von POSIX benötigt, daher gibt es nicht viele sh, die nichts davon wissen.