Re: bash liest weder .profile noch .bash_profile ein
Andreas Pakulat <apaku@gmx.de> writes:
>On 26.Oct 2004 - 02:06:34, Helmut Waitzmann wrote:
>> Andreas Pakulat <apaku@gmx.de> writes:
>>
>> >Schreib sie in die $HOME/.bashrc, dann werden sie immer eingelesen...
>>
>> Nein. Dann werden sie von allen interaktiven nicht-login-shells
>> eingelesen; nicht-interaktive nicht-login-shells lesen kein "~/.bashrc".
>
>Und? Die lesen auch keine .profile oder /etc/profile .
Genau. Darum ist es Unsinn, zu sagen "Nimm ~/.bashrc, das wird immer
eingelesen." Denn das stimmt bei nicht-interaktiven shells nicht.
Und weil das erste Shell-Skript, das bei einem grafischen login
unter der Kennung des angemeldeten Benutzers gestartet wird, nun einmal
von einem nicht-interaktiven shell gelesen wird (interaktive shells gibt
es dann erst in Terminal-Emulatoren), kann man ihm nur auf die Weise eine
ordentliche Konfiguration verpassen, dass man es zum login-shell macht.
Die Auswahl "KDE" im Sessions-Menü des GDM, "/etc/gdm/Sessions/KDE",
macht es richtig: Das shell script beginnt mit folgender Zeile:
#!/bin/bash -login
Das ist ein (nicht-interaktives) Login-bash-Skript, das beim Start
zunächst /etc/profile und danach "$HOME/.bash_profile" oder
"$HOME/.profile" liest.
>> >Nein, du kannst den ganzen Kram doch in eine ~/.bashrc tun und die
>> >noch in der .bash_profile sourcen. Dadurch kommst du bei jeder! Shell in
>> >den Genuss deiner Konfiguration.
>>
>> Nein. Nicht-interaktive nicht-login-shells bleiben da außen vor (siehe
>> manual bash(1)).
>
>Ja, aber die kannst du sowieso nicht weiter konfigurieren, weder mit
>*profile, nocht mit *bashrc.
Genau. Du hast es ja doch verstanden. Darum halte ich beim startup
nicht-interaktive nicht-login-shells eines Fehlerberichtes wert.
>Nicht-interaktive nicht-login-shells sind im Normalfall Skripte, die
>saemtliche Umgebungsvariablen selbst setzen muessen...
Eigentlich nicht. Eher sind es Skripte, die ihre Umgebungsvariablen
bereits fertig in der Umgebung geliefert bekommen.
>> >Ich denke immernoch, das *dm keine Loginshell aufmachen,
KDE aus der GDM-Auswahl ist ein Login-Shell, die anderen
Auswahlmöglichkeiten (Debian, Gnome, Xsession) allerdings nicht.
>> >da ja saemtliche Prozesse danach direkt an init haengen...
>>
>> Ich sehe zwischen "keine Loginshell" und "sämtliche Prozesse direkt an
>> init hängen" keinen Zusammenhang. Erklärst Du ihn mir?
>
>Klaro: Hab mich da etwas ungluecklich ausgedrueckt... Was ich meinte
>war: Der X11-Prozess haengt an init. Wenn man mittels startx den
>Xserver startet sieht das ganze so aus:
>
>init
>|
>|- bash -- startx -- xinit -- XFree86
>.. |
> |- x-session-manager
Und das bash ist ein login shell und baut eine ordentliche Umgebung für
startx usw. auf. Da ist also alles in Ordnung.
>Beim Login mittels eines Display-Managers haengt der X11-Server am
>Displaymanager:
>
>init
> ├─kdm─┬─XFree86
> │ └─kdm───x-session-manag─┬─gnome-settings-
> │ ├─kwrapper
> │ └─ssh-agent
>
>kdm, wiederum wird von init ausgefuehrt, als letztes der Init-Skripte
>und benutzt wiederum soweit ich das sehe eine nicht-interaktive
>nicht-login-shell.
Wenn da also kdm oder x-session-manag (ksmserver?) keine "$HOME/.profile"
entsprechende Konfigurationsmöglichkeit bietet, sieht es in der Tat nicht
gut aus.
--
Wenn Sie mir E-Mail schreiben, stellen | When writing me e-mail, please
Sie bitte vor meine E-Mail-Adresse | precede my e-mail address with
meinen Vor- und Nachnamen, etwa so: | my full name, like
Helmut Waitzmann <xxx@example.net>, (Helmut Waitzmann) xxx@example.net
Reply to: