[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: