Verstehen Sie die Priorität und den Unterschied des bashrc-Profils

Damit Bash uns besser dienen kann, müssen wir die Bash-Shell-Umgebung anpassen.

~/.bash_profile, ~/.bashrc und ~/.bash_logout

  1. Die oben genannten drei Dateien sind die Benutzerumgebungskonfigurationsdateien der Bash-Shell, die sich im Home-Verzeichnis des Benutzers befinden. Unter diesen ist .bash_profile die wichtigste Konfigurationsdatei, die jedes Mal gelesen wird, wenn sich der Benutzer am System anmeldet, und alle darin enthaltenen Befehle werden von Bash ausgeführt. .profile (von der Bourne Shell und Korn Shell verwendet) und .login (von der C Shell verwendet) sind Synonyme für .bash_profile aus Gründen der Kompatibilität mit anderen Shells. Verwenden Sie in Debian die Datei .profile anstelle der Datei .bash_profile. Wenn die Datei ~/.bash_profile vorhanden ist, wird im Allgemeinen die Datei ~/.bashrc ausgeführt.
  2. Die .bashrc-Datei wird gelesen, wenn die Bash-Shell eine andere Bash-Shell aufruft, d. h. die Datei wird gelesen, wenn der Bash-Befehl in die Shell eingegeben wird, um eine neue Shell zu starten. Dadurch werden die für Anmeldungen und Subshells erforderlichen Umgebungen effektiv getrennt. Aber im Allgemeinen wird das .bashrc-Skript im .bash_profile aufgerufen, um die Benutzerumgebung einheitlich zu konfigurieren.
  3. .bash_logout wird beim Verlassen der Shell gelesen. Daher können wir einige Bereinigungsbefehle in diese Datei einfügen.

/etc/bashrc und /etc/profile sind (globale) Konfigurationsdateien auf Systemebene. Wenn .bash_profile und .bashrc nicht im Home-Verzeichnis des Benutzers gefunden werden können, werden diese beiden Dateien gelesen. .bash_history ist die Verlaufsdatei der Bash-Shell, die alle Befehle aufzeichnet, die Sie in die Bash-Shell eingeben. Die Anzahl der in der Verlaufsdatei gespeicherten Datensätze kann über die Umgebungsvariable HISTSIZE festgelegt werden.

  1. /etc/profile: ist eine globale Profildatei, die sich nach der Einstellung auf alle Benutzer auswirkt
  2. /home//.profile oder .bash_profile ist für bestimmte Benutzer gedacht, und Sie können Ihre eigenen Umgebungsvariablen für Benutzer konfigurieren.

Wenn wir diese Konfigurationsdateien ändern, können wir source .bash_profileden Befehl verwenden, damit der geänderte Inhalt sofort wirksam wird. Die Anmeldemethode ist unterschiedlich und die verwendeten Benutzerzubehörinformationen sind ebenfalls unterschiedlich.

Arten von Login-Shells: interaktiv und nicht interaktiv

Interaktive Login-Shell:

Das heißt, Sie können mit der Shell interagieren und benötigen für die Anmeldung eine Authentifizierung. Es gibt:
1. Über die Konsole oder Remote-Verbindung sind Benutzername und Passwort erforderlich.
2. su – Benutzername (kann als interaktive Anmeldung betrachtet werden)
Die Dateien, die der Reihe nach bei der interaktiven Anmeldung gelesen werden, sind: /etc/profile–>/etc/profile.d/*–>(~/.bash_profile | ~/.bash_login | /.profile)–> /.bashrc–>/etc/bashrc–>~/.bash_logout
Die Funktionen dieser Dateitypen sind:
1. /etc/profile: Wenn sich ein Benutzer am System anmeldet, ist diese Datei normalerweise Wird für den Benutzer verwendet. Bietet eine Standardumgebung. Diese Standardumgebung ist eigentlich die Definition einer Reihe von Umgebungsvariablen, und schließlich werden die Dateien in /etc/profile.d aufgerufen. Dateien gelten für alle Benutzer. Die Bedeutung jeder Umgebungsvariablen in der Datei ist wie folgt:

  • PATH: Legen Sie den PATH entsprechend der UID fest, ob zum Systembefehlsverzeichnis mit sbin gewechselt werden soll
  • BENUTZER: Wird entsprechend dem aktuellen Anmeldebenutzernamen eingestellt.
  • MAIL: Legen Sie das E-Mail-Speicherverzeichnis des aktuellen Benutzers entsprechend dem Benutzerkonto fest.
  • HISTSIZE: bezieht sich auf die Anzahl der gespeicherten historischen Befehlsdatensätze.
  • LOGNAME: bezieht sich auf den Anmeldenamen des aktuellen Benutzers.
  • HOSTNAME: Der Inhalt ist /bin/hostname. Wenn Sie den Hostnamen verwenden möchten, wird dieser normalerweise aus dieser Umgebungsvariablen abgerufen. INPUTRC: Wenn der Benutzer keine benutzerdefinierte Eingabeschaltflächenfunktion hat, dann setzen Sie INPUTRC=/etc/inputrc. Diese Datei definiert Bash-Hotkeys und andere Daten. Wenn vorhanden, wird sie nicht festgelegt.

2. /etc/profile.d: Hauptsächlich die Einstellungen für die Shell, die für alle Benutzer gelten. Darunter befindet sich in dieser Verzeichnisdatei ein lang.sh-Skript, das die Datei /etc/sysconfig/i18n aufruft, eine wichtige Konfigurationsdatei, die darüber nachdenkt, welche Sprachfamilie unsere Bash standardmäßig verwendet. Das Wichtige in der Datei ist die Einstellung der LANG-Variablen.
3. /.bash_profile: Wenn sich der Benutzer anmeldet, wird die Datei nur einmal ausgeführt. Standardmäßig werden einige Umgebungsvariablen festgelegt und die .bashrc-Datei des Benutzers ausgeführt, die auf den aktuellen Benutzer wirkt. Wenn diese Datei nicht vorhanden ist, lautet sie /.bash_login, und wenn diese Datei nicht vorhanden ist, lautet sie ~./profile.
4. ~/.bashrc: Diese Datei wird gelesen, wenn sich der Benutzer anmeldet und jedes Mal, wenn eine neue Shell geöffnet wird. Alle Befehlsaliase des geänderten Benutzers usw. speichern; auf den aktuellen Benutzer reagieren.
5. /etc/bashrc: Führen Sie diese Datei für den Benutzer aus, der die Bash-Shell ausführt, und konfigurieren Sie Bash. Wenn die Bash-Shell geöffnet wird, wird diese Datei gelesen. Gilt für alle Benutzer.
6, ~/.bash_logout: Wenn der Benutzer Bash verlässt, lesen Sie die Datei und führen Sie einige Vorgänge aus. Gilt für den aktuellen Benutzer. Login-Shell: Sie liest zuerst die Befehle in der globalen Konfigurationsdatei /etc/profile und führt sie aus, sucht dann nacheinander
nach den drei Konfigurationsdateien /.bash_profile, /.bash_login und ~/.profile und liest die Befehle und führt sie aus in diesen drei Der erste Befehl in der Datei, der vorhanden und lesbar ist. sofern nicht --noprofileper Option deaktiviert.

Nicht interaktive Login-Shells:

Das heißt, nachdem der Benutzer die Shell erhalten hat, werden alle Dateien gleichzeitig gelesen, ohne dass eine Interaktion mit dem Benutzer erforderlich ist. Beispiel:
1. su-Benutzername (kann als nicht interaktive Shell betrachtet werden)
2. Die Shell, die das Skript ausführt
3. Die simulierte Shell, die unter der grafischen Oberfläche geöffnet wird

Die Dateien, die der Reihe nach von der nicht-interaktiven Anmeldung gelesen werden, sind: ~/.bashrc–>/etc/bashrc–>/etc/profile.d/*Die Auswirkung jeder Datei
auf die Benutzer-Shell-Anmeldung ist die gleiche wie die der interaktiven Anmeldung ( muss erklärt werden Die Datei ./bashrc ruft die Datei /etc/bashrc auf)

Interaktive Shell ohne Anmeldung:

Zum Beispiel das Starten einer Bash-Shell ohne Anmeldung am System (z. B. durch Eingabe von „bash“ an der CLI-Eingabeaufforderung) oder ein Terminal, auf das Linux über eine grafische Oberfläche zugreift.
Es werden nur die Dateien ~/.bashrc und /etc/bashrc gelesen. Die interaktive Shell ohne Anmeldung führt die Befehle in der Datei ~/.bashrc aus. Diese Datei wird jedes Mal neu gelesen, wenn das Shell-Skript ausgeführt wird, sodass sie am vollständigsten ist.
Unterschiedliche Distributionen können unterschiedlich sein, beispielsweise sind Debain-Serien unterschiedlich, beispielsweise Ubuntu /etc/profile–>/etc/environment–>$HOME/.profile

Nicht-Login-nicht-interaktive Shell:

Beispielsweise sind ein Crontab-Skript, ein Shell-Skript und SSH-Ausführungs-Remote-Befehle Nicht-Login- und nicht-interaktive Shells. Wenn sie nicht verarbeitet werden, handelt es sich weder um interaktive Shells noch um Login-Shells, sodass Profile und RC nicht auf dem ausgeführt werden Internet. Wie man damit umgeht? Sie können beispielsweise Sha-Bang #!/bin/bash -lin einen Anmeldemodus ändern, das Skript die Anmeldeshell zum Interpretieren und Ausführen verwenden lassen, Sie können /etc/profile laden oder den Bash-Interpreter aufrufen und Parameter hinzufügen -l.

der Unterschied

Profil

Das Profil ist der einzige Ort, an dem ein Benutzer Umgebungsvariablen festlegen kann, da möglicherweise mehrere Shells wie Bash oder ZSH vorhanden sind, Umgebungsvariablen jedoch nur einheitlich initialisiert werden müssen, was die Rolle des Profils darstellt

bashrc

Wird zum Initialisieren von Bash, zum Vervollständigen des Bash-Codes, für Bash-Aliase, für Bash-Farben usw. verwendet. Außerdem gibt es shrc, und zshrc ist
normalerweise eine gute Möglichkeit, dies zu tun

  • /etc/profile ist für alle Benutzer konfiguriert
  • Die Konfiguration in ~/.profile steht nicht in direktem Zusammenhang mit Bash-Befehlen wie Umgebungsvariablen usw.
  • Konfigurieren Sie Konfigurationen im Zusammenhang mit interaktiven Befehlszeilen in ~/.bashrc, z. B. automatische Befehlsvervollständigung, EDITOR-Variablen, Bash-Aliase usw.
  • ~/.bash_profile kann als ~/.profile verwendet und nur von Bash gelesen werden

Auswirkungen verschiedener Granatentypen

Für Benutzer ist die Konfiguration beim Start die größte Auswirkung der Shell-Klassifizierung.
Am Beispiel von Bash: Wenn es als Login-Shell ausgeführt wird und sich ein Benutzer beispielsweise beim System anmeldet, liest es zunächst die Befehle in /etc/profile und führt sie aus. Als nächstes sucht und liest es die Startkonfigurationsdateien in der folgenden Reihenfolge: /.bash_profile, /.bash_login, ~/.profile und stoppt, wenn die erste vorhanden und lesbar ist. Wenn Bash als Login-Shell beendet wird, liest es auch den Inhalt von ~/.bash_logout und /etc/bash.bash_logout und führt ihn aus. Wenn Bash hingegen als Shell ohne Anmeldung ausgeführt wird, beispielsweise wenn der Benutzer ein Terminalprogramm startet oder ein Skript ausführt, werden diese Dateien nicht gelesen.
Welche Konfigurationsdateien von einer Nicht-Login-Shell gelesen werden, hängt auch davon ab, ob sie interaktiv oder nicht interaktiv ist. Beim Starten eines interaktiven Terminals liest Bash seine Ausführungskontrolldatei und führt sie aus, die standardmäßig ~/.bashrc ist. Wenn das Skript ausgeführt wird, funktioniert keine der oben genannten Dateien, da es nicht interaktiv ist, und Bash liest stattdessen die durch die Umgebungsvariable BASH_ENV angegebene Datei und führt sie aus.
Bei anderen Shells als Bash können die spezifischen Ausführungsdetails unterschiedlich sein, sie entsprechen jedoch grundsätzlich einigen allgemeinen Prinzipien: Login-Shells lesen Konfigurationsdateien mit Profil- und Login-Schlüsselwörtern, interaktive Nicht-Login-Shells lesen Konfigurationsdateien mit rc-Schlüsselwörtern. Führen Sie die Steuerung aus In der Datei werden nicht angemeldete, nicht interaktive Shells nur gemäß den Variablen des Schlüsselworts env initialisiert.
Bei der Verwendung der Shell frage ich mich manchmal, warum der von mir hinzugefügte Startcode nicht funktioniert hat. Dies liegt höchstwahrscheinlich daran, dass der Code in einer Datei geschrieben ist, die die aktuelle Shell-Instanz niemals liest. Wenn Sie die Geschosstypen und die Wirkung verschiedener Geschossarten kennen, können Sie Geschosse gezielt konfigurieren und einsetzen.

Supongo que te gusta

Origin blog.csdn.net/zyy247796143/article/details/126784390
Recomendado
Clasificación