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

Re: [solved] joe ohne Umlaute als root



On 03.11.05 16:16:27, André Bischof wrote:
> Harald Weidner schrieb:
> >>Das ganze übrigens über eine ssh-Shell, ich glaube man unterscheidet da ja 
> >>auch zwischen "login-Shells" und "interaktiven Shells" (das wären dann die 
> >>lokalen?), ist das richtig?
> >Diesen Unterschied gibt es, aber mit Umlauten hat er allenfalls am
> >Rande zu tun. Eine Login-Shell unterscheidet sich von einer nicht-login
> >Shell im Wesentlichen dadurch, dass bei ersterer die /etc/profile
> >und ~/.profile bzw. ~/.bash_profile eingelesen werden. In der Manual-
> >Page zur bash kann man unter dem Stichwort INVOCATION mehr dazu
> >nachlesen.
> 
> So hatte ich das auch halbwegs verstanden, und ich dachte, dass eine dieser 
> Dateien dann die /etc/environment sourced, die Angaben zu den Lokalen enthält 
> - und hier sah ich den Zusammenhang mit den Umlauten.

/etc/environment wird durch ein PAM-Modul eingelesen (naemlich pam_env),
normalerweise beim Login.

> Sprachlich ist mir der Unterschied der Shell-Arten nicht klar, da ich mich doch 
> in beiden einloggen muss - ist also eine Login-Shell quasi eine "Remote-Shell" 
> und eine nicht-login-Shell eine lokale?

Eine Remote-Shell ist einfach nur eine Shell die nicht auf dem Lokalen
Rechner geoeffnet wurde. Die kann dabei ebenso eine login-shell sein,
wie eine nicht-login shell oder eine interaktive oder nicht-interaktive
und beliebige Kombinationen aus diesen.

Lokal gibts ebenso alle Kombinationen. Beim Einloggen mittels
Displaymanager (z.B. gdm oder kdm) wird (i.A.) eine nicht-interaktive
login-Shell gestartet (was bedeutet die profile-Dateien werden
eingelsen, die bashrc-Dateien nicht). Beim Login auf einem tty mittels
des login-Programms welches dort nach dem Starten laeuft wird
normalerweise eine interaktive login-shell gestartet.

Du kannst nun aus einer laufenden Shell eine neue login-shell starten,
indem du bash -l aufrufst, damit werden dann die profile-Dateien neu
eingelesen und die bashrc ebenso da es eine interaktive Shell wird.
Nicht-Interaktive Shells kannst du starten indem du direkt ein
auszufuehrendes Programm angibts, z.B. so:

bash -c "ls"

dabei wird eine nicht-interaktive nicht-login Shell gestartet die "ls"
ausfuehrt und sich dann beendet. Mit bash -l -c "ls" hast du eine
nicht-interaktive login-shell die ls ausfuehrt.

Das alles steht auch in man bash, allerdings verstreuter und vor allem
in English... 

Andreas

-- 
Hope that the day after you die is a nice day.



Reply to: