Ich verwende 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 dieses .bash_profile
sehen wird nicht bezogen (Umgebungsvariablen, die export
sind ed darin sind nicht gesetzt). Aber wenn ich mich von einer Textkonsole aus anmelde (ctrl +alt +F1 ) oder manuell bash -l
ausführen vom Terminalemulator, .bash_profile
funktioniert gut.
Liege ich falsch, wenn ich denke, dass .bash_profile
sollten bezogen werden, wenn X startet und alle export
‘ed vars sollten im Terminal verfügbar sein und von X ausgeführt werden?
P.S. Platzieren Sie alles in .bashrc
und es aus .bash_profile
beziehen ist keine gute Idee (https://stackoverflow.com/questions/902946/):Umgebungsmaterial sollte nur einmal bezogen werden.
Akzeptierte Antwort:
Die Datei ~/.bash_profile
wird von bash gelesen, wenn es sich um eine Login-Shell handelt. Das erhalten Sie, wenn Sie sich im Textmodus anmelden.
Wenn Sie sich unter X anmelden, werden die Startskripte von /bin/sh
ausgeführt . Unter Ubuntu und Mint /bin/sh
ist dash, nicht bash. Dash und Bash haben beide die gleichen Kernfunktionen, aber Dash hält sich an diese Kernfunktionen, um schnell und klein zu sein, während Bash viele Funktionen hinzufügt, auf Kosten von mehr Ressourcen. Es ist üblich, dash für Skripte zu verwenden, die die zusätzlichen Funktionen nicht benötigen, und bash für die interaktive Verwendung (obwohl zsh viele nettere Funktionen hat).
Die meisten Kombinationen aus Display Manager (das Programm, in das Sie Ihren Benutzernamen und Ihr Passwort eingeben) und Desktop-Umgebung lauten ~/.profile
aus den Anmeldeskripten in /etc/X11/Xsession
, /usr/bin/lightdm-session
, /etc/gdm/Xsession
oder was auch immer anwendbar ist. Legen Sie also Ihre Umgebungsvariablendefinitionen in ~/.profile
ab . Stellen Sie sicher, dass Sie nur Syntax verwenden, die dash unterstützt.
Also, was sollten Sie wo hinstellen?
-
Ein gutes
.bash_profile
lädt.profile
, und lädt.bashrc
wenn die Shell interaktiv ist.. ~/.profile if [[ $- == *i* ]]; then . ~/.bashrc; fi
-
In
.profile
, Definitionen von Umgebungsvariablen und andere Sitzungseinstellungen wieulimit
. - In
.bashrc
, setzen Sie interaktive Bash-Einstellungen wie Aliase, Funktionen, Vervollständigung, Tastenbelegungen (die nicht in.inputrc
), …