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

Re: Aliase dauerhaft festlegen



On Thu, Jan 30, 2003 at 06:38:01PM +0100, Martin Küppers wrote:
> die Aliase nicht mehr, und doch stehen sie in der .bashrc.
> An welcher Schraube muß ich drehen, damit die Aliase für mich als root 
> und normaler user dauerhaft festgelegt bleiben?

~/.bashrc ist schon richtig.  Dann ist's für den jeweiligen Nutzer, aber
auch nur unter bestimmten Bedinungen:

    1. Bash startet
    2. Bin ich eine Login-Shell?

        Ja: 1. /etc/profile abarbeiten
            2. $HOME/.bash_profile 
               oder $HOME/.bash_login 
               oder $HOME/.profile
               abarbeiten
            3. Fertig

        Nein: Bin ich eine interaktive Shell (also kein Script)?
            Ja: $HOME/.bashrc abarbeiten     
            Nein: Existiert $BASH_ENV? Dann die dort genannte
                Datei abarbeiten


Wie Du siehst, wird beim "normalen" Einloggen nie eine .bashrc beachtet.
Warum das ganze?

    *profile*: Setzen von Umgebungsvariablen, die normalerweise
    auch an Subshells vererbt werden sollen.

    *bashrc*: Setzen von Aliasen, die im interaktiven Leben zwar
    nützlich sind, aber für Script (was ja auch nur Subshells sind)
    gefährlich sein können.  (Ein Script-Autor wird sich immer darauf
    verlassen, das 'ls' so funktioniert wie /bin/ls und nicht ein Alias
    auf z.B. 'ls -F' ist...)

    Nichtinteraktive Shells (also Scripte) haben von Deinen
    Umgebungsvariablen Kenntnis, aber nicht von Deinen Aliasen.

    Interaktive Shells (die *keine* Loginshells sind, z.B. entstehen
    die, wenn man im vi ':shell' aufruft) haben die
    *profile* nicht gelsen, aber über den Vererbungsmechanismus Kenntnis
    von den Umgebungsvariablen, die aktuellen Aliase kennen sie, weil
    sie die *bashrc* gelesen haben....

    Was fehlt?  Loginshells haben bisher keine Kenntnis von der
    *bashrc*.  Darum findest Du in der *profile* normalerweise etwas
    derart:  test -f $HOME/.bashrc && source $HOME/.bashrc

Wenn's unter X funktioniert (X kann auch KDE heißen, was ja nix weiter
als besonders buntes X ist ;)), dann wahrscheinlich, weil die
X-Termnials, die dort geöffnet werden, keine Loginshell, sondern nur
eine interaktive Shell starten.  Was ja fast Sinn ergibt.  Manchmal.

Auf der Textkonsole kommst Du zu Deiner Shell normalerweise nach einem
Login -> also hast Du eine Login-Shell..

Ich bin mir jetzt nicht mehr sicher, ob Du das wissen wolltest, aber
jetzt ist's aufgeschrieben.


    Viele Gruesse aus Dresden
    Heiko Schlittermann (36, ledig, 1 Kind) ;-)
-- 
 SCHLITTERMANN.de ------------------ internet & unix support -
 <a href="http://debian.schlittermann.de/";> Debian 3.x CD </a>
 Heiko Schlittermann HS12-RIPE -------------------------------
 pgp: A1 7D F6 7B 69 73 48 35  E1 DE 21 A7 A8 9A 77 92 -------
 gpg: 3061 CFBF 2D88 F034 E8D2  7E92 EE4E AC98 48D0 359B -----




Reply to: