Re: Wo in Debian global $PATH setzen
Am Montag, 7. Januar 2013 schrieb Heiko Schlittermann:
> Martin Steigerwald <Martin@lichtvoll.de> (Mo 07 Jan 2013 13:17:34 CET):
> > Alternativ halt dann doch Shell-Spezifisch in:
> > /etc/bash.bashrc
>
> In den rc-Files hat das eigentlich nichts zu suchen, meine ich.
> Umgebungsvariablen werden vererbt, müssen also nur rechtzeitig gesetzt
> werden. Die rc-Files werden bei jeder interaktiven Shell gelesen, wenn
> sie keine Login-Shell ist.
Hmmm, ja. Und selbst wenn sie eine ist:
martin@merkaba:~> grep bashrc .bash_profile
# include .bashrc if it exists
#if [ -f ~/.bashrc ]; then
# source ~/.bashrc
if [ -e ~/.bashrc ]
# execute .bashrc if it exists.
. ~/.bashrc
martin@merkaba:~> grep bashrc /etc/profile
# The file bash.bashrc already sets the default PS1.
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
Nun, PATH ist in /etc/profile definiert und nicht in der /etc/bash.bashrc,
also scheint Upstream Deine Meinung zu teilen.
> Die Shell im Terminal zu einer Login-Shell zu machen, ist eine gute
> Sache, der neue PATH gilt dann aber eben nur für Kinder von Prozessen im
> Terminal (und natürlich die Shell im Terminal selbst.
Warum? De facto ist sie doch keine. Ich habe mich nicht extra mit für die
Shell anmelden müssen.
> Wenn Du es in der gesamten X-Umgebung brauchst, solltest Du es in einem
> der Scripte der XSession unterbringen.
Ich hab Pfad-Anpassungen für mich persönlich einfach in der ~/.zshrc
Ja, ist vielleicht auch nicht der optimale Ort, doch ich bin da irgendwann
ausgestiegen bei der verschachtelten Logik, wer da was wann einbindet.
> > Inwieweit allerdings /etc/profile shell-übergreifend funktioniert, ist
> > mir nicht ganz klar. Denn man zshall erwähnt nur Z-Shell-spezifische
> > Konfigurationsdateien. Könnte also sein, dass es so oder so
> > shell-spezifisch ist, und dann würde ich die rc/env-Dateien
> > bevorzugen, damit es auch für Nicht-Login-Shells passt.
>
> Nicht-Login-Shells sind eigentlich immer (mehr oder weniger direkte)
> Kinder von Login-Shells und sollten die Umgebung geerbt haben.
Demnach müsste der Pfad aber auch in X11 gesetzt sein. Zumindest eine KDE-
Sitzung wird über ein Shell-Skript hochgefahren. Und auch mit anderen Setups
dürften Shell-Skripte die Hauptrolle spielen. Bei Matthias hat aber
irgendetwas diese Vererbungslogik unterbrochen.
> > Ich dachte eigentlich sei /etc/environment für sowas auch gedacht, aber
> > binden die anderen Dateien gar nicht ein:
> >
> > martin@merkaba:/etc#1> grep environment bash.bashrc
> > martin@merkaba:/etc#1> grep environment profile
> > martin@merkaba:/etc#1> grep environment zsh/zshrc
> > martin@merkaba:/etc#1> grep environment zsh/zshenv
> > # search path, plus other important environment variables.
>
> /etc/environment, diese Datei müsste von pam_env.so gelesen werden und
> da jeder Deiner Arbeiten wahrscheinlich ein Login vorausgeht, und damit
> auch ein Interaktion mit PAM, sollte das klappen. Dann ist das auch
> unabhängig davon, ob Deine Shell sich nun für /etc/profile interessiert.
>
>
> M.E. ist /etc/environment der wirklich korrekte Weg.
Hehe, korrekt oder nicht :). Ich erinnere mich noch gut an den umask-Bug-
Report, wo es darum ging, wie man diese am besten global setzt. Mein
aktueller Stand und das funktioniert auf der Arbeit tatsächlich so, ist
pam_umask.
Jow, man pam_env:
FILES
/etc/security/pam_env.conf
Default configuration file
/etc/environment
Default environment file
$HOME/.pam_environment
User specific environment file
Das kann Matthias ja dann mal ausprobieren.
Ciao,
--
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Reply to: