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


15

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

Antworten:


23

Es ist keine Login-Shell.

Wenn es sich bei einer Shell um eine Anmeldeshell handelt, wird nach .bash_profile gesucht, sofern vorhanden, und danach nach .profile. Andere Shells suchen nach .bashrc

Sie können also die gewünschten Elemente in jede Shell-Instanz in .bashrc einfügen und möglicherweise einen Verweis haben, der .bashrc in .profile enthält.

Also: .bashrc:

stuff you want

Ende von .profile:

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

Wenn ich also in KDE 'konsole' starte, ist das eine Shell ohne Anmeldung, oder? Auf einem anderen Computer habe ich definitiv Dinge in .profile abgelegt und sie funktionieren lassen, wenn ich ein Terminal wie dieses öffne. Ich glaube, ich verstehe nicht, wann beim Anmelden etwas anderes passieren soll als beim Öffnen eines Terminals?
David Doria

@DavidDoria es kommt drauf an, ich habe configs geändert oder alias gemacht um was konsole laufen zu lassen, damit es läuft bash --login. In Ihrem Fall scheint es nur bash auszuführen, was standardmäßig keine Login-Shell auslöst
Rich Homolka

Wenn Sie LightDM verwenden, könnte dies der Grund sein. Andere Display-Manager wie GDM und KDM-Quellprofile bei der Anmeldung, LightDM jedoch nicht (beabsichtigt). Siehe bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
WakiMiko

Ich benutze KDM.
David Doria

2
Wenn Sie Gnome Terminal verwenden, können Sie Bearbeiten-> Profileinstellungen ausführen, zur Registerkarte Titel und Befehl wechseln und "Befehl als Anmeldeshell ausführen" aktivieren. Es wird dann Ihr .bash_profile oder .profile als Quelle verwenden, wenn Sie ein Terminal wie erwartet öffnen.
Lambart,


1

Wenn Sie einen grafischen Desktop verwenden, sollte .profile von Ihrem Desktop-Manager bereitgestellt werden. Lightdm macht jetzt Source .profile, zumindest auf Ubuntu. Siehe: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

Mit kdm und Kubuntu-12.04 wird die Datei / etc / kde4 / kdm / Xsession bezogen, die auch das .profile enthält. Kubuntu-12.10 wird wahrscheinlich lightdm verwenden. Ubuntu 12.04 verwendet lightdm, sodass / usr / sbin / lightdm-session .profile enthält.

Ich denke, der Weg ist, (1) Umgebungseinstellungen in ~ / .profile festzulegen / zu exportieren und (2) .profile von .bash_profile zu beziehen:

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

(und nicht .bashrc, das von .profile oder .bash_profile bezogen wurde).

Siehe auch:


1
Dies erklärt, wie Sie Ihre Quelle .profilebei der Anmeldung erhalten, aber er fragt sich tatsächlich, wie Sie sie erhalten bash, wenn er ein Terminal startet (nicht bei der Anmeldung)
cpast

Sie sollten keine .profile-Quelle haben wollen, wenn Sie ein neues Terminal starten (aus KDE heraus). Der gesamte Zweck von .profile besteht darin, es bei der Anmeldung einmal zu beziehen, entweder auf einem Grafikterminal oder einem Textterminal. .profile sollte in dem Moment, in dem Sie sich bei KDE angemeldet haben, gefunden worden sein.
Freddy Vulto

.profile sollte von Ihrem Desktop-Manager bezogen werden. Nun, das hängt vom Verständnis des Zwecks der Datei ab. In Debian ist / etc / profile (und ~ / .profile als Erweiterung) für bashartige Shells gedacht .
Alois Mahdal

Sie müssen es nicht erneut beziehen, WENN es bei der Anmeldung bezogen wird. Ihre Bash wird es erben, es sei denn, Sie machen etwas Dummes wie "export PATH = ~ / .bin" oder etwas, das das Überschreiben verursacht.
HörmannHH
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.