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