Ich habe eine Reihe verschiedener * nix-basierter Systeme der Jahre verwendet, und es scheint, dass jede von mir verwendete Bash-Variante einen anderen Algorithmus hat, um zu entscheiden, welche Startskripte ausgeführt werden sollen. Welches Startskript ist für Aufgaben wie das Einrichten von Umgebungsvariablen und Aliasnamen und das Drucken von Startnachrichten (z. B. MOTDs) der geeignete Ort, um diese auszuführen?
Was ist der Unterschied zwischen den Dingen bei der Umsetzung .bashrc
, .bash_profile
und .environment
? Ich habe auch andere Dateien wie gesehen .login
, .bash_login
und .profile
; sind diese jemals relevant? Was sind die Unterschiede, in denen ausgeführt wird, wenn Sie sich physisch anmelden, sich remote über ssh anmelden und ein neues Terminalfenster öffnen? Gibt es signifikante Unterschiede zwischen Plattformen (einschließlich Mac OS X (und dessen Terminal.app) und Cygwin Bash)?
quelle
/etc/bashrc
um die Antwort zu erfüllen?Wird klassisch
~/.profile
von Bourne Shell verwendet und wahrscheinlich von Bash als Legacy-Maßnahme unterstützt. Wieder~/.login
und~/.cshrc
wurden von C Shell verwendet - ich bin nicht sicher, ob Bash sie überhaupt verwendet.Das
~/.bash_profile
würde einmal beim Login verwendet werden. Das~/.bashrc
Skript wird jedes Mal gelesen, wenn eine Shell gestartet wird. Dies ist analog zu/.cshrc
C Shell.Eine Konsequenz ist, dass die Inhalte
~/.bashrc
so leicht (minimal) wie möglich sein sollten, um den Overhead beim Starten einer Shell ohne Anmeldung zu verringern.Ich glaube, die
~/.environment
Datei ist eine Kompatibilitätsdatei für Korn Shell.quelle
Ich habe hier Informationen zu .bashrc und .bash_profile gefunden, um es zusammenzufassen:
Auch gibt es ein vollständiges Follow - up auf jedem der Konfigurationsdateien hier
Diese sind wahrscheinlich sogar von der Distribution abhängig, nicht alle Distributionen entscheiden sich für jede Konfiguration und einige haben sogar noch mehr. Wenn sie jedoch denselben Namen haben, enthalten sie normalerweise denselben Inhalt.
quelle
Laut Josh Staiger führt Terminal.app von Mac OS X standardmäßig eine Anmeldeshell anstelle einer Nicht-Anmeldeshell für jedes neue Terminalfenster aus und ruft statt .bashrc .bash_profile auf.
Er empfiehlt:
quelle
Ein guter Ort zum Anschauen ist die Manpage von Bash. Hier ist eine Online-Version. Suchen Sie nach dem Abschnitt "INVOCATION".
quelle
Ich habe Distributionen der Debian-Familie verwendet, die anscheinend ausgeführt werden
.profile
, aber nicht.bash_profile
, während RHEL-Derivate.bash_profile
zuvor ausgeführt wurden.profile
.Es scheint ein Chaos zu sein, wenn Sie Umgebungsvariablen einrichten müssen, um unter jedem Linux-Betriebssystem zu funktionieren.
quelle