Einfache Abfrage: Ich habe gerade festgestellt, dass ich noch nie einen Shebang über einem .bashrc
Skript gesehen habe, was mich zu der Annahme veranlasst, dass das System die Standard-Shell verwendet, um sie beim Anmelden zu entschlüsseln ( ${SHELL}
). Ich denke über Gründe nach, warum dies der Fall ist, dh, es wird als schlechte Angewohnheit angesehen, etwas anderes als die Standard-Shell zum Ausführen des Anmeldeskripts zu verwenden.
22
Antworten:
.bashrc
und.bash_profile
sind keine Skripte. Es handelt sich um eine Konfigurationsdatei, die bei jederbash
Ausführung auf zwei Arten abgerufen wird:Der Abschnitt INVOCATION auf der bash-Manpage ist relevant.
Sie können steuern, wann sie über die Befehlszeilenoptionen
--norc
und geladen werden--noprofile
. Sie können auch die Position überschreiben, an der sie mithilfe des--rcfile
Schalters geladen werden .Wie bereits erwähnt, können Sie nachahmen, wie diese Dateien mithilfe des
source <file>
Befehls oder mithilfe des. <file>
Befehls geladen werden .Stellen Sie sich diese Funktionalität am besten wie folgt vor:
Methoden zum Aufrufen
Dieses Thema scheint von Zeit zu Zeit zu erscheinen. Hier finden Sie eine kurze Übersicht über die verschiedenen Aufrufmöglichkeiten
bash
und deren Auswirkungen. HINWEIS: Ich habe die Meldungen "sourced $ HOME / .bashrc" und "sourced" hinzugefügt $ HOME / .bash_profile "in die entsprechenden Dateien.grundlegende Anrufe
bash -i
bash -l
bash -il -or- bash -li
bash -c "..cmd .."
HINWEIS: Beachten Sie, dass der
-c
Switch keine der Dateien als Quelle hat!Deaktivieren des Lesens von Konfigurationsdateien
bash --norc
bash - noprofile
bash --norc -i
bash --norc -l
bash --noprofile -i
bash --noprofile -l
bash --norc -i -or- bash --norc -l
Esoterischere Wege, Bash zu nennen
bash --rcfile $ HOME / .bashrc
bash -norc -rcfile $ HOME / .bashrc
Diese sind gescheitert
bash -i -rcfile ~ / .bashrc
bash -i -rcfile .bashrc
Es gibt wahrscheinlich mehr, aber Sie verstehen es, hoffentlich ....
Was sonst?
Wenn Sie von diesem Thema so begeistert sind, dass Sie mehr darüber lesen / erforschen möchten, empfehle ich Ihnen dringend, sich das Handbuch für Bash-Anfänger anzuschauen, insbesondere Abschnitt 1.2. Vorteile der Bourne Again SHell . Die verschiedenen Unterabschnitte unter "1.2.2.1. Aufruf" bis "1.2.2.3.3. Verhalten der interaktiven Shell" erläutern die geringen Unterschiede zwischen den verschiedenen Möglichkeiten, die Sie aufrufen können
bash
.quelle
.bash_profile
eine Zeile enthält, um die Quelle zu bestimmen.bashrc
. Aber ich glaube, das ist sehr typisch für Setups..bashrc
und es.bash_profile
sind keine Skripte . IMHO handelt es sich um spezielle Skripte, die implizit während der Bash-Initialisierung oder explizit bei der Anwendung ihrer Änderungen bereitgestellt werden. Sie konfigurieren nicht nur die Bash-Umgebung (Variablen, Funktionen, Aliase ...) wie von Konfigurationsdateien erwartet. Sie können alle Aktionen ausführen, die in allgemeinen Skripten ausgeführt werden. Zum Beispiel können sie verschiedene Aktionen wie Hintergrundaufgaben starten, Protokolle schreiben, einige Programme initialisieren usw. Trotzdem vielen Dank für die detaillierte Zusammenfassung!.bashrc
Skripte werden nur vonbash
selbst ausgeführt. Sie sind nicht freistehend und nicht dazu gedacht,exec
vom System unterdrückt zu werden. (Tatsächlich sind sie im Allgemeinen nicht als ausführbar gekennzeichnet und, wie Sie sagen, haben sie keine Shebang-Zeile.)Solche Skripte sollen
source
d sein, da sie im Allgemeinen ($PATH
zum Beispiel) Umgebungsvariablen ändern , von denen erwartet wird, dass sie nach Beendigung des Skripts bestehen bleiben. Es wäre also wirklich sinnlos zu versuchen, eine in einer Subshell auszuführen.quelle
Beachten Sie zusätzlich zu den anderen Antworten, dass Ihnen nichts verbietet, wenn Sie dies wünschen, einen Shebang an den Anfang dieser Konfigurationsdateien zu setzen.
Das würde der Shell-Beschaffung nicht schaden, da der Shebang wie ein regulärer Kommentar verarbeitet, dh ignoriert wird.
Dies kann Editoren helfen, die mithilfe der Syntaxhervorhebung herausfinden, welche Programmiersprache in der Datei verwendet wird.
Beachten Sie, dass einige Editoren wie
vim
alternative Methoden wie Modelines für letztere bereitstellen. Sie können also immer Modenzeilen an das Ende von~/.bashrc
und~/.bash_profile
wie folgt setzen:quelle
.bash_profile
auf Empfehlung von ShellCheck einen Shebang zu Beginn meiner Antwort hinzuzufügen.Ich habe das überall gelesen, weiß nicht wo genau, aber es ist wahr
quelle