Ich benutze Linux Mint. Meine Login-Shell ( cat /etc/passwd | grep myUserName
) ist bash.
Nachdem ich meine grafische Desktop-Umgebung gestartet und einen Terminal-Emulator ausgeführt habe, kann ich feststellen, dass .bash_profile
keine Quellen vorhanden sind (die darin enthaltenen Umgebungsvariablen export
sind nicht festgelegt). Aber wenn ich mich von einer Textkonsole aus anmelde ( ctrl+ alt+ F1) oder manuell bash -l
vom Terminalemulator aus starte, .bash_profile
funktioniert das einwandfrei.
Liege ich falsch, wenn ich der Meinung bin, dass .bash_profile
diese Quelle beim export
Start von X bereitgestellt werden sollte und alle Ed-Vars im Terminal verfügbar sein sollten, die von X ausgeführt werden?
PS .bashrc
Es .bash_profile
ist keine gute Idee, alles einzulegen und von dort zu beziehen ( https://stackoverflow.com/questions/902946/ ): Umgebungsthemen sollten nur einmal bezogen werden.
.bash_profile
ist das Start-Konfigurationsskript von bash. Es gibt kein Standard-Mandat X zur Quelle.bash_profile
.Was Sie denken, ist eher
.profile
. Ursprünglich war es die Startkonfigurationsdatei der Borowski-Shell (sh). Heutzutage haben viele Distributionen ihre Desktop-Umgebung als Quelle eingerichtet.profile
. Beachten Sie, dass dies ebenfalls kein Standard ist, aber es scheint eine Konvention zu sein.Debian, das
.profile
bei der grafischen Anmeldung als Quelle verwendet wurde ( Wiki-Seite ab 2013 ), tut dies jetzt nicht mehr ( Wiki-Seite ab 2016 ).Arch-Quellen
.xprofile
beim grafischen Login ( Wiki-Seite ab 2013 ).Ubuntu hat früher davon abgeraten
.profile
( Wiki-Seite ab 2013 ), jetzt wird davon nicht mehr abgeraten ( Wiki-Seite ab 2016 ).Zu Ihrer anderen Frage: Warum funktioniert mein ~ / .bash_profile nicht? Das ist das erwartete Verhalten.
Das Verhalten ist, kurz gesagt, wie folgt:
~/.profile
~/.bashrc
Weitere Details finden Sie in meiner Antwort auf eine ähnliche Frage in askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc / 132319 # 132319
quelle
~/.bashrc
" ist ein schlechter Rat: Sie sollten nur.bashrc
aus einer interaktiven Shell lesen . Sie haben hier das Hauptproblem übersehen: Wenn Sie sich unter X anmelden, gibt es keine Anmeldeinstanz von bash (unter den meisten Display Manager / Desktop-Umgebungskombinationen, offensichtlich auch unter AntonioK)..bashrc
" meinte ich immer eine interaktive Shell. Ich habe diesen Teil geklärt. Ich hoffe es ist nicht mehr irreführend..profile
( Link ) ab " Das Wiki hat einmal (absurderweise) davon abgeraten; das wurde behoben. (Hinweis:/etc/profile
Bei systemweiten Zuweisungen wird davon abgeraten, Skripts hinzuzufügen/etc/profile.d
.) Benutzerdefinierte.profile
Dateien werden jetzt als eine der empfohlenen Methoden zum Festlegen von Umgebungsvariablen pro Benutzer angezeigt: "Geeignete Dateien für Einstellungen von Umgebungsvariablen, die sich nur auf a auswirken sollten Bestimmte Benutzer (und nicht das gesamte System) sind ~ / .pam_environment und ~ / .profile . "~/.profile
für die grafische Anmeldung liest und~/.xsessionrc
stattdessen verwendet werden sollte.Beim Versuch, die Datei / source ~ / .profile neu zu laden, treten einige Probleme auf. [Dies bezieht sich auf Ubuntu Linux - in einigen Fällen unterscheiden sich die Details der Befehle]
Anzeige. 1)
Wenn Sie dies direkt im Terminal ausführen, wird keine Subshell erstellt. Sie können also zwei Befehle verwenden:
oder
In beiden Fällen wird die Umgebung mit dem Inhalt der .profile-Datei aktualisiert.
Ad 2) Sie können jedes Bash-Skript entweder durch Aufrufen starten
oder
Im ersten Fall wird eine Subshell erstellt, die die Umgebungsvariablen Ihres Systems nicht beeinflusst und nur für den Subshell-Prozess sichtbar ist. Nach Beendigung des Subshell-Befehls werden keine Exporte usw. angewendet. Dies ist ein häufiger Fehler und führt dazu, dass viele Entwickler viel Zeit verlieren.
Damit Ihre in Ihrem Skript vorgenommenen Änderungen für die globale Umgebung wirksam werden, muss das Skript ausgeführt werden
Befehl.
Um sicherzustellen, dass Ihr Skript nicht in einer Subshel ausgeführt wird, können Sie diese Funktion verwenden. (Wieder Beispiel ist für Ubuntu-Shell)
Ich hoffe, dies beseitigt einige der häufigsten Missverständnisse! : D Viel Glück!
quelle
In Ihrer Frage verweisen Sie auf https://stackoverflow.com/questions/902946/ als Empfehlung, keine Quelle anzugeben, wenn die akzeptierte Antwort dies vorschreibt
Bei
.profile
Linux Mint hat es bei mir nicht geklappt, alles einzuspielen. Mit hat gut.bashrc
funktioniert.quelle
Die einfache Lösung besteht darin, das Terminal zu einem Login-Terminal zu machen. Für das Gnome-Terminal können Sie unter 'Kacheln und Befehle' des Standardprofils das Kontrollkästchen "Befehl als Anmeldeshell ausführen" aktivieren. Dieser Artikel erläutert den Unterschied zwischen einer Anmeldeshell und einer anderen Shell.
quelle