Martin Doerr schrieb:
Hallo miteinander,

da ich mich gerade mal wieder ein wenig mit LPIC beschäftige, bin ich auf eine Sache gestoßen, welche mich als Anfänger und Ubuntu-8.10-Benutzer etwas verwundert. Es geht um die Thematik Shell- / Umgebungsvariablen:

- irgenwann habe ich mal gelernt, dass systemweite Shellanpassungen in /etc/profile und benutzerweite in ~/.bash_profile stehen. - da ich in meinem Home-Verzeichnis keine .bash_profile finden konnte suchte ich nach dem Synonym .bash_login bzw. .profile und wurde bei letzterem fündig! Dort steht aber nur ein kleines Script, welches auf .bashrc verweist!

Ein System habe ich dabei über die Jahre und Distributionen auch nicht entdecken können und schaue, wenn ich es nicht finde, in den Manpages oder der Doku der Distribution nach.

- eigentlich suche ich nach dem Ursprung der Shell-Variablen PATH, SHELL, MANPATH usw. Irgendwo müssen diese doch definiert werden!
 In der .bashrc auf jeden Fall nicht...!

MANPATH wird in Ubuntu 8.04 nicht benutzt. `man` liest die Pfadliste direkt aus /etc/manpath.config.

SHELL wird von zumindest von der bash selbst gesetzt, wenn es nicht vor deren Aufruf bereits gesetzt war. Aus der bash-manpage::

  The full pathname to the shell is kept in this environment variable.
  If it is not set when the  shell starts, bash assigns to it the
  full pathname of the current user’s login shell.

- dann lese ich immer wieder die Aussage, dass z.B. PATH eine Umgebungsvariable und keine Shell-Variable ist, was den Eintrag in
 /etc/environment erklären würde.

Eine Prozess, z.B. eine shell, wird mit einer Liste von Environmentvariablen gestartet. Diese Variablen werden, nicht nur in einer shell, als Environment bezeichnet (siehe bash manpage, "ENVIRONMENT").

In einer shell kann die Liste verändert werden. Sofern neue Variablen mit `export <VAR>=...` gesetzt werden, werden diese mit den restlichen Envirionmentvariablen an einen von ihr gestarteten [Shell-]Prozess weitergegeben.

Innerhalb einer bash sind aber auch andere Variablen verfügbar, die nicht weitergegeben werden. Darunter ein Großteil der Variablen in der bash manpage unter "Shell Variables".

Soweit ichs bei meinem Ubuntu 8.04 sehe werden die Werte aus /etc/environment von pam_env gelesen und in die Environment geschrieben (u.a. für login, su und sshd). Somit landen sie auch in jeder shell, die von login, su oder sshd gestartet wird.

..Carsten
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an