[linux-l] umgebungsvariabeln setzen

Steffen Dettmer steffen at dett.de
Sa Mai 4 20:53:26 CEST 2002


* Roland Penzin wrote on Thu, May 02, 2002 at 10:03 +0200:
> Am Donnerstag, 2. Mai 2002 08:25 schrieb Eicher Rene:

> mal genereller geantwortet, weil ich grad nicht schlafen kann, ;-)

Mal korrekter geantwortet, weil ich gerade man bash gelesen hab :)

> wenn das system hochfährt, liest es irgendwann mal das generelle shell 
> skript 
> /etc/profile

Wenn das System hochfährt, wird i.d.R. /bin/init gestartet. Was
das genau tut, hängt stark vom System ab. Meistens liest es
/etc/inittab. Da steht dann drin, daß es mgetty (oder sonstwas
für getty's oder noch ganz anderes) starten soll. mgetty kriegt
dann Consolen und/oder serielle Leitungen oder was auch immer. Da
geht auch ein Modem, das ist ganz witzig.

mgetty startet dann /bin/login, nachdem es STDIO mit der Console
verknüpft hat. Im Prinzip macht mgetty so ziemlich überhaupt nix,
glaub ich jedenfalls ;) Login liest dann auch noch ein paar
Files, aber nix wichtiges :)

Wenn sich der Benutzer dann an login angemeldet hat, startet
login die Benutzer-Shell aus /etc/passwd, z.B. /bin/bash. Sonst
nimmt es /bin/sh.

Bash liest dann /etc/profile, dann ~/.bash_profile,
~/.bash_login und ~/.profile (in dieser Reihenfolge).
Insbesondere wird also /etc/profile bereits untern dem
angemeldeten Benutzer und nicht als root ausgeführt.

Wird bash als sh gestartet, werden die ~/.bash_* Dateien nicht
geladen.

> und danach das user - spezifische skript, wenn der user sich
> erfolgreich einloggt
> 
> ~/.profile
> 
> klar?
> danach wird eine shell gestartet, meist "bash" und wenn diese, wird ein 
> userspezifissches skript gestartet, will heissen
> 
> ~/.bashrc

Wenn die bash als *nicht* Loginshell aufgerufen wird, also über
ein Menüpunkt oder indem man einfach "bash" in ne (evtl. andere)
Shell eingibt, nur dann wird ~/.bashrc gestartet. 

SuSE ändert das Verhalten etwas, weil in der "default" ~/.profile
die ~/.bashrc geladen wird. Damit wird dann .bashrc immer
geladen. SuSE lädt auch aus ~/.profile herraus /etc/profile, was
laut man bash Blödsinn ist, und aus aus .bashrc die
/etc/profile, was Sinn macht (bei interaktiven Shells). Daher
stimmt auch bei SuSE interactive bash der PATH. Eigentlich ist
die Bash-Idee hier jedoch anders: wenn man ne interaktive Shell
mit einem anderen PATH startet, soll der wohl so bleiben (also
nicht /etc/profile und so lesen). Kann man machen, wie man
möchte. SuSE's Weg ist jedoch "einfacher", PATH stimmt eben, egal
wie Shell gestartet. Kann man ja ändern, wenn man es anders mag.

> das auch noch bei suse ~/.alias aufruft, da suse meint, dass dort die 
> aliase am besten untergebracht sind.

Ja, vielleicht, damit updates einfacher werden? Aber inzwischen
sourced SuSE ja auch ein /etc/profile.local, nicht schlecht, die
Idee.

> unsre redHat - spezis schlafen wohl noch :-)

:) Dazu sag ich auch nix weiter, wegen dem Zank und Streit :)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l