.profile läuft nicht, wenn ich ein Bash-Terminal starte

.profile läuft nicht, wenn ich ein Bash-Terminal starte

Wenn ich ein Bash-Terminal starte, wird mein .profile nicht ausgeführt. Ich habe kein ~/.bash_profile oder ~/.bash_login, also sollte .profile doch laufen, oder? Was könnte sonst noch falsch sein?

Antwort1

Es ist keine Login-Shell.

Wenn es sich bei einer Shell um eine Login-Shell handelt, sucht sie nach .bash_profile, falls vorhanden, und dann nach .profile. Andere Shells suchen nach .bashrc

Sie können also die gewünschten Dinge in jeder Shell-Instanz in .bashrc einfügen und möglicherweise über eine Referenz verfügen, die .bashrc in .profile als Quelle verwendet.

Also: .bashrc:

stuff you want

Ende von .profile:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc

Antwort2

versuchen Sie es ~/.bashrcstattdessen mit.

Antwort3

Wenn Sie einen grafischen Desktop verwenden, sollte .profile von Ihrem Desktop-Manager bezogen werden. Lightdmtutsource .profile jetzt, zumindest unter Ubuntu. Siehe:https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

Mit kdm und Kubuntu-12.04 wird die Datei /etc/kde4/kdm/Xsession als Quelle verwendet, die das .profile einschließt. Kubuntu-12.10 wird wahrscheinlich lightdm verwenden. Ubuntu 12.04 verwendet lightdm, sodass /usr/sbin/lightdm-session als Quelle für .profile dient.

Ich denke, der richtige Weg besteht darin, (1) die Umgebungseinstellungen in ~/.profile festzulegen/zu exportieren und (2) .profile über .bash_profile zu beziehen:

[[ -f ~/.profile ]] && . ~/.profile

(und .bashrc darf weder von .profile noch von .bash_profile stammen).

Siehe auch:

verwandte Informationen