Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So lösen Sie das Problem, dass die Linux-Benutzerquelle .bashrc oder .profile die Datei nicht finden kann

So lösen Sie das Problem, dass die Linux-Benutzerquelle .bashrc oder .profile die Datei nicht finden kann

PHPz
PHPznach vorne
2023-05-13 21:37:195105Durchsuche

    Linux-Benutzerquelle .bashrc oder .profile-Datei kann nicht gefunden werden

    Diese Situation ist mir schon einmal in Debian, New For, begegnet Bei hinzugefügten Benutzern zeigt der Pfad für jede Anmeldung sh-42$ an, was erfordert, dass su - Benutzername zum Normalzustand zurückkehrt, und die .bashrc- und andere Konfigurationsdateien im Benutzerverzeichnis können nicht bezogen werden, was eine Reihe von Problemen verursacht.

    Wenn dies der Fall ist, ist es sehr wahrscheinlich, dass die Standard-Start-Shell von Linux falsch ist und vi /etc/passwd die entsprechende Start-Shell des Benutzers überprüft und vergleicht mit anderen normalen Benutzern. Wenn sie unterschiedlich sind, ändern Sie sie so, dass sie gleich sind. .

    Wenn beispielsweise die Shell anderer normaler Benutzer /bin/bash ist und die Shell abnormaler Benutzer /bin/sh ist, ändern Sie sie in /bin/bash.

    Der Unterschied zwischen Linux .bashrc .bash_profile und .profile

    1 Überblick

    Die Bash-Shell verwendet einige Startdateien, um Umgebungsvariablen festzulegen, diese Startup Dateien bestimmen bestimmte Bash-Shell-Konfigurationen für die Shell selbst und für Systembenutzer. In diesem Artikel werden wir den Unterschied zwischen .bashrc, .bash-profile und .profile verstehen.

    2 Interaktive und nicht-interaktive Shells

    • Bash bietet zwei Modusoptionen in der interaktiven Shell: Anmelden und Nicht-Anmelden (Anmelden und Nicht-Anmelden). -Login).

    • Wenn wir uns mit ssh am System anmelden, erhalten wir eine interaktive Login-Shell (interaktive Login-Shell), die beim Aufruf die Startdatei liest.

    • Wenn wir jedoch eine neue Shell auf einer bereits angemeldeten Shell aufrufen, erhalten wir eine interaktive Shell ohne Anmeldung. Diese Shell führt nur .bashrc-Dateien aus. Wenn ein Skript beispielsweise eine Subshell erzeugt, um einen Befehl auszuführen, ist die Subshell eine nicht interaktive Shell, die Subshell führt keine Startdateien aus, sondern erbt Umgebungsvariablen von der Shell, die sie erstellt hat.

    • 3 Bash-Startdatei

    Die Startdatei enthält die Befehle, die beim Start der Shell ausgeführt werden müssen. Daher führt die Shell automatisch die Befehle in diesen Startdateien aus, um die Shell einzurichten. Dieser Vorgang findet statt, bevor die Eingabeaufforderung angezeigt wird.

    3.1 Bedeutung von .bash_profile

    Die .bash_profile-Datei enthält Befehle zum Festlegen von Umgebungsvariablen, sodass die Shell diese Variablen erbt. In einer interaktiven Login-Shell sucht Bash zunächst nach der Datei /etc/profile. Wenn es gefunden wird, wird es von Bash in der aktuellen Shell gelesen und ausgeführt. Das Ergebnis ist, dass /etc/profile die Umgebungskonfiguration für alle Benutzer festlegt. Falls vorhanden, führt Bash .bash_profile in der aktuellen Shell aus und Bash hört dann auf, nach anderen Dateien wie .bash_login und .profile zu suchen.

    Wenn Bash .bash_profile nicht findet, sucht es der Reihe nach nach .bash_login und .profile und führt nur die erste lesbare Datei aus.

    Sehen wir uns eine Beispieldatei .bash_profile an. Hier setzen wir die PATH-Variable zurück und exportieren sie

    echo "Bash_profile execution starts.."  
    PATH=$PATH:$HOME/bin; 
    export PATH; 
    echo "Bash_profile execution stops.."

    Bevor wir uns interaktiv an der Eingabeaufforderung der Shell anmelden, sehen wir die folgende Ausgabe

    Bash_profile execution starts.. 
    Bash_profile execution stops.. 
    [example@example ~]$

    3.2 von bashrc

    .bashrc enthält Befehle, die speziell für die Bash-Shell gelten. Jede interaktive Shell ohne Anmeldung liest zuerst .bashrc, und im Allgemeinen ist .bashrc der beste Ort, um Aliase und Bash-bezogene Funktionen hinzuzufügen.

    Die Bash-Shell sucht im Home-Verzeichnis nach der .bashrc-Datei und verwendet die Quelle, um sie in der aktuellen Shell auszuführen. Lassen Sie uns die .bashrc-Datei anhand eines Beispiels kennenlernen

    echo "Bashrc execution starts.." 
    alias elui='top -c -u $USER' 
    alias ll='ls -lrt' 
    echo "Bashrc execution stops.."

    Vor der Eingabeaufforderung der interaktiven Nicht-Anmelde-Shell sehen wir die folgende Ausgabe

    [example@example ~]$ bash
    Bashrc execution starts.. 
    Bashrc execution stops.. 
    [example@example ~]$

    3.2 Die Bedeutung von .profile

    Wenn .bash_profile während des interaktiven Shell-Anmeldevorgangs nicht im Home-Verzeichnis vorhanden ist, sucht Bash nach .bash_login . Wenn **.bash_login** gefunden wird und Bash es ausführt. Wenn .bash_login nicht im Home-Verzeichnis vorhanden ist, sucht Bash nach .profile und führt es aus.

    .profile kann die Konfiguration mit .bash_profile oder .bash_login beibehalten. Es steuert, welche Eingabeaufforderungen angezeigt werden, Tastaturtöne, welche Shell geöffnet werden soll und individuelle Profileinstellungen, die in der Datei /etc/profile festgelegte Variablen überschreiben. 4 Unterschied

    Bei jeder interaktiven Anmeldung führt die Bash-Shell .bash_profile aus. Wenn .bash_profile nicht im Home-Verzeichnis gefunden wird, führt Bash die erste lesbare Datei aus, die aus .bash_login und .profile gefunden wird. Bei jedem interaktiven Shell-Start ohne Anmeldung erstellt Bash jedoch .bashrc.

    Normalerweise werden Umgebungsvariablen in .bash_profile eingefügt. Da die interaktive Login-Shell die erste Shell ist, werden alle für die Umgebungseinrichtung erforderlichen Standardeinstellungen in **.bash_profile** abgelegt. Daher werden sie nur einmal festgelegt und in allen Subshells vererbt.

    Ebenso werden auch Aliase und Funktionen in .bashrc eingefügt. Stellen Sie sicher, dass diese jedes Mal geladen werden, wenn Sie eine Shell aus einer vorhandenen Umgebung starten.

    Allerdings, um Vermeiden Sie Anmeldung und Nicht-Anmeldung. Unterschiede in den interaktiven Shell-Einstellungen für die Anmeldung. .bash_profile ruft .bashrc auf. Daher wird das folgende Code-Snippet in **.bash_profile** eingefügt, sodass bei jeder interaktiven Login-Shell auch .bashrc in derselben Shell ausgeführt wird:

    if [ -f ~/.bashrc ];
    then 
        .  ~/.bashrc; 
    fi 
    PATH=$PATH:$HOME/bin export PATH

    注意:

    总而言之,在使用环境之前,shell需要其启动文件以配置shell环境。

    在本文中,我们检查了各种shell模式。然后,我们了解了各种bash启动文件的重要性。最后,我们检查了这些启动文件之间的差异。

    Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass die Linux-Benutzerquelle .bashrc oder .profile die Datei nicht finden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen