Hallo Sebastian, * Sebastian Huber schrieb am 01.Feb.2001:
ich hab das Problem jetzt loesen koennen: Wenn man von einer Loginshell eine weitere Shell startet, werden nicht immer alle oder sogar keine Konfigurationsdateien (/etc/profile usw.) bearbeitet. Wenn man jetzt das wichtige Zeug in die ~/.bashrc schreibt (bei mir gab es die vorher gar nicht), klappt es.
Nochmal um es klarzustellen. Es wird zwichen Loginshell und normaler interaktiver shell unterschieden. (Und einer nichtinteraktiven shell, ein shellskript. Aber darauf gehe ich hier nicht weiter ein, denn ein shellskript führt vorher gar keine andere Datei aus.) Eine Loginshell ist z.B eine shell die auf der Konsole aufgerufen wird, wenn man sich einloggt. Eine Loginshell führt zuerst /etc/profile aus, wenn diese Datei existiert. Existiert eine Datei ~/.bash_profile, so wird anschließend diese Datei ausgeführt. Existiert sie aber nicht, und nur dann und existiert darüber hinaus die Datei ~/.bash_login, so wird diese Datei danach ausgeführt. Existieren weder ~/.bash_profile noch ~/.bash_login, wohl aber die Datei ~/.profile, so wird diese ausgeführt. Es werden somit maximal zwei Dateien ausgeführt. /etc/profile und entweder ~/.bash_profile, oder ~/.bash_login oder ~/.profile. Ist die shell keine Loginshell, sondern einen normale interaktive shell, wie z.B. eine shell, die xterm oder ein sonstiges X-Terminal aufruft, so wird nur ~/.bashrc ausgeführt. Das ist die Ausgangssituation. Natürlich kann innerhalb eines solchen Skripts mittels source andere Skripte aufgerufen werden. SuSE regelt das so, daß in ihrem Standard- ~/.profile ~/.bashrc aufgerufen wird und in ihrer Standard- ~/.bashrc als erstes /etc/profile, falls noch nicht geschehen. Ob /etc/profile schon einmal aufgerufen wurde, wird an einer Variablen festgestellt, die in /etc/profile gesetzt wird. So ist gewärleistet, daß jede interaktive shell, egal ob Loginshell oder nicht, zuerst /etc/profile und dann ~/.bashrc aufruft. Außerdem wird am Ende von /etc/profile noch /etc/profile.local aufgerufen, falls es existiert. Das ist notwendig, weil SuSEconfig /etc/profile jedesmal auf seinen Ursprungszustand zurücksetzt. Daher sollten alles was Systemweit gelten soll in /etc/profile.local und alles was nur für einen User gelten soll in seiner ~/.bashrc gesetzt werden. Bernd