# systemweite bash Konfiguration vor Updates schützen

## xhi2018

Hallo,

ich habe das Ziel  1.) auf meinen Systemen die Initialisierung- und Startup-Konfiguration der bash individuell aber doch systemweit       durchzuführen.  2.) Meine Anpassungen möchte ich gern vor zukünftigen Updates wie "emerge --deep --newuse --update world" oder ähnlichem geschützt wissen.Kurzes Beispiel dazu:

Ich möchte das der bash-prompt für alle User (für die aktuell vorhandenen und für alle zukünftigen User) einheitlich aussieht. Ungeachtet dessen soll es den Usern möglich sein, eigene bash-prompts zu definieren.

Nun könnte ich meine Konfiguration z.B. in die bash startup file /etc/profile eintragen. Damit wäre aber mein Punkt 2.) von oben nicht erfüllt, denn die /etc/profile gehört zu dem ebuild sys-apps/baselayout

```

      [15:09]root@box:#~>equery b /etc/profile

      [ Searching for file(s) /etc/profile in *... ]

      sys-apps/baselayout-1.12.9-r2 (/etc/profile)

```

Nun gut. Die /etc/profile liest - wenn die bash verwendet wird - die /etc/bash/bashrc ein:

```
37  if [ -n "${BASH_VERSION}" ] ; then

38   # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1

39   # including color.  We leave out color here because not all

40   # terminals support it.

41   if [ -f /etc/bash/bashrc ] ; then

42      # Bash login shells run only /etc/profile

43      # Bash non-login shells run only /etc/bash/bashrc

44      # Since we want to run /etc/bash/bashrc regardless, we source it

45      # from here.  It is unfortunate that there is no way to do

46      # this *after* the user's .bash_profile runs (without putting

47      # it in the user's dot-files), but it shouldn't make any

48      # difference.

49      . /etc/bash/bashrc

50  else

51     PS1='\u@\h \w \$ '

52  fi
```

Aber hier kann ich meine Änderungen auch nicht ablegen. Wieder wäre mein Punkt 2.) von oben nicht erfüllt, denn

die /etc/bash/bashrc gehört zu dem ebuild app-shells/bash

```

      [15:09]root@box:$~>equery b /etc/bash/bashrc

      [ Searching for file(s) /etc/bash/bashrc in *... ]

      app-shells/bash-3.2_p17 (/etc/bash/bashrc)

```

Folge: Die beiden Dateien /etc/profile und /etc/bash/bashrc stehen also unter der "Kontrolle" des Packetmanagements emerge. Bei einem Update eines der Pakete (sys-apps/baselayout oder app-shells/bash) könnten nun meine individuellen Änderungen in diesen Dateien verloren gehen wenn nach einem Update z.B.:

emerge --deep --newuse --update world und dem anschließenden etc-update nicht genau aufgepasst wird.

Dann hab ich dies am Ende der /etc/profile gefunden:

```

60  for sh in /etc/profile.d/*.sh ; do

61     if [ -r "$sh" ] ; then

62        . "$sh"

63     fi

64  done

65  unset sh

```

Hier denke ich, könnte die Stelle sein an der ich meine individuellen und systemweiten bash Initialisierung- und Startup-Konfigurationen ablegen könnte. Also hier eine Datei:

```
/etc/profile.d/my_prompt.sh
```

mit folgendem Inhalt anlegen:

```
#

# [ /etc/profile.d/prompt.sh ]

# begin system-wide bash-prompt setting

#

# color-settings

WhiteOnGreen="\[\e[01;37;42m\]"

WhiteOnRed="\[\e[01;37;41m\]"

Normal="\[\e[0m\]"

Blue="\[\e[01;34;34m\]"

BlueOnGrey="\[\e[01;34;47m\]"

WhiteOnRed="\[\e[01;37;41m\]"

BlackOnRed="\[\e[00;30;41m\]"

BlackOnGreen="\[\e[00;30;42m\]"

# set different prompt for root an normal users

if [ "`id -u`" = 0 ]; then

  export PS1="${BlackOnRed}[\A]${WhiteOnRed}\u${BlackOnRed}@${WhiteOnRed}\h${Normal}${Blue}:\\$\w>${Normal}"

else

  export PS1="${BlueOnGrey}[\A]${WhiteOnGreen}\u${BlackOnGreen}@${WhiteOnGreen}\h${Normal}${Blue}:\\$\w>${Normal}"

fi;

# EoF
```

Nun funktioniert das leider nicht wie gewünscht. Der bash-Prompt sieht bei "normalen" Usern in der "KDE konsole" und "yakuake" so aus:

```

    user@box ~ $ echo $PS1

    \[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]

```

bei root ist es in der "KDE konsole" und "yakuake" so wie gewünscht:

```

    [10:20]root@box:#~>echo $PS1

    \[\e[00;30;41m\][\A]\[\e[01;37;41m\]\u\[\e[00;30;41m\]@\[\e[01;37;41m\]\h\[\e[0m\]\[\e[01;34;34m\]:\$\w>\[\e[0m\]

```

Es sieht so aus, dass bei normalen Usern unter X KDE die /etc/profile nicht beachtet - keine login shell gestartet - wird?!

Erst ein su - user gibt mir den gewünschten bash prompt aber leider erst dann und nicht sofort wenn ich eine "KDE konsole"

bzw. "yakuake" starte...

Auf die Konsole (also STRG+ALT+Fn ) kann ich aktuell nicht wechseln. Die Tastenkombination hat bei mir keine Funktion. Warum

das so ist, muss ich noch schauen.

Kann mir jemand einen Tipp geben, woran das liegen könnte - merci

----------

## franzf

Ohne mir jetzt alles genau durchgelesen zu haben (sry, es ist sehr schön zu sehen dass jemand gleich im Eingangspost alles schreibt was er versucht hat  :Very Happy: )

Ich habe mir eine Datei angelegt /etc/profile_source, in welcher alles Mögliche an persönlicher Konfiguration drin steht.

Nach einem Update und darauf folgendem etc-update (bei dem ich eben /etc/profile nach (sehr) kurzer Einsicht einfach updaten lass) mach ich ein

```
echo "source /etc/profile_source" >> /etc/profile
```

(kannst es natürlich auch normal per vim/nano/etc machen) und die Sache ist für mich gegessen  :Smile: 

Ich hoffe dass dir der Tip zusagt und hilft  :Wink: 

Grüße

Franz

----------

## musv

Die /etc/bash/bashrc ist schon die richtige Datei für Deine individuelle Konfiguration. Ist ja auch der Sinn der Sache, daß bei Updates die Standardkonfiguration überschrieben werden kann. Sonst müßte in der Entwicklung eines Paketes von Version 0.01 bis xx.xxx die Configdatei immer haargenau dasselbe Format haben.

Das, was du suchst, steht hier:

http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=3&chap=2#doc_chap3

Nachtrag: In der /etc/profile rumzuschreiben, ist zumindest bei Gentoo nicht gerade angedacht. Damit machst du das ganze System "unsauber". Für individuelle Konfigurationen hast du die /etc/bash/bashrc und die Dateien in /etc/env.d/ für die Umgebungsvariablen.Last edited by musv on Thu Nov 15, 2007 1:58 pm; edited 1 time in total

----------

## franzf

 *xhi2018 wrote:*   

> Auf die Konsole (also STRG+ALT+Fn ) kann ich aktuell nicht wechseln. Die Tastenkombination hat bei mir keine Funktion. Warum
> 
> das so ist, muss ich noch schauen.
> 
> Kann mir jemand einen Tipp geben, woran das liegen könnte - merci

 

Ist zwar ein anderes Thema - aber egal  :Wink: 

Wenn ich mich recht erinner musst du folgendes machen:

```
emerge -1 xkeyboard-config xorg-server xf86-input-keyboard
```

Es gab ein Problem mit einem Symlink der fehlte (in xkeyboard-config). Das wurde scheinbar mittlerweile gefixt. Du musst aber deinen X neustarten (ausloggen, wenn du dann nicht auf die Console mit [strg alt fn] kommst um ein /etc/init.d/xdm restart abzusetzen, einfach strg alt backspace zum X abschießen).

Ansonsten eben einen Rechnerneustart  :Wink: 

Grüße

Franz

----------

## xhi2018

 *musv wrote:*   

> Die /etc/bash/bashrc ist schon die richtige Datei für Deine individuelle Konfiguration. Ist ja auch der Sinn der Sache, daß bei Updates die Standardkonfiguration überschrieben werden kann. Sonst müßte in der Entwicklung eines Paketes von Version 0.01 bis xx.xxx die Configdatei immer haargenau dasselbe Format haben.

 

Hm - diesen Satz verstehe ich jetzt nicht - sorry & bitte nicht böse sein.

Ich möchte ja Aktualisierungen/Fehlerbereinigungen der /etc/bash/bashrc haben die mit einem update es ebuilds app-shells/bash kommen können. Aber zudem möchte ich gerne eine Stelle haben, wo ich meine individuelle Konfiguration - die für das ganze System gelten soll - ablegen kann und die dort bei einem update auch geschützt ist.

 *musv wrote:*   

> Das, was du suchst, steht hier:
> 
> http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=3&chap=2#doc_chap3

 

Die Doku kenne ich, wenn ich mir diese durchlese und richtig verstehe, dann kann ich nicht nachvollziehen dass /etc/bash/bashrc die richtige Stelle sein soll damit der Punkt 2.) - aus meinem ersten Posting - erfüllt ist.

Hier mal ein paar Infos von meinem System:

```

    [11:33]root@box:#~>emerge --version

    Portage 2.1.3.19 (default-linux/x86/2007.0/desktop ....

    [11:33]root@box:#~>emerge --info | grep 'CONFIG_PROTECT='

    CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"

```

Das Verzeichnis /etc/bash/ befindet sich !_nicht_! in der CONFIG_PROTECT Variable - demnach nicht in einem geschützten Verzeichnis. Also würde ich behaupten, das Portage bei einem update von app-shells/bash alle Dateien in dem Verzeichnis /etc/bash/  überschreibt - und zwar !_ungefragt_! - meine Konfiguration wäre also weg! Denn in der Doku steht:

 *Gentoo Dokumentation - Schutz von Konfigurationsdateien wrote:*   

>     Portage überschreibt Dateien einer alten Version bei der Installation einer neuen Version, sofern diese sich nicht in
> 
>     einem geschützten Verzeichnis befinden. Diese ...

 

Ich könnte nun das Verzeichnis /etc/bash/ in die CONFIG_PROTECT Variable aufnehmen. Dann werde ich bei einem update von app-shells/bash von portage vermutlich benachrichtigt. Denn in der Doku steht:

 *Gentoo Dokumentation - Schutz von Konfigurationsdateien wrote:*   

>     Diese geschützten Verzeichnisse sind durch die CONFIG_PROTECT Variable definiert und sind im Normalfall Verzeichnisse,
> 
>     die Konfigurationsdateien enthalten. Eine Datei, die in ein solches geschütztes Verzeichnis geschrieben werden soll,
> 
>     wird umbenannt und der Anwender darüber informiert, dass eine neue Version einer (wahrscheinlich) Konfigurationsdatei vorliegt. 

 

Nun muss ich aber bei etc-update aufpassen und ggf. die Änderungen manuell zusammen mergen. Denn zum einen will ich ja die Aktualisierungen/Fehlerbereinigungen aus neuen Version der /etc/bash/bashrc - zum anderen will ich meine Konfiguration ja nicht verlieren.

 *musv wrote:*   

> ... Für individuelle Konfigurationen hast du die /etc/bash/bashrc und die Dateien in /etc/env.d/ für die Umgebungsvariablen.

 

Ja genau so eine Lösung wie bei den Umgebungsvariablen - also die Konfiguration in Dateien an einer bestimmten Stelle im System auszulagern - stelle ich mir da vor.  Meine individuellen Umgebungsvariablen die systemweit gelten sind bei mir in der

```
      /etc/env.d/99local
```

definiert. Doch leider kann man dort nur Umgebungsvariablen definieren - also nur was wie KEY="value"

Gentoo Dokumentation 5. Umgebungsvariablen

 *Gentoo Dokumentation - Umgebungsvariablen wrote:*   

> 
> 
>       Wichtig: Sie können Shell-Variablen nicht verwenden, wenn Sie andere Variablen definieren.
> 
>       Das bedeutet, dass Dinge wie FOO="$BAR" (wo $BAR eine weitere Variable ist) nicht erlaubt sind.

 

Der Weg wie er in der /etc/profile angeboten wird:

```

    60  for sh in /etc/profile.d/*.sh ; do

    61     if [ -r "$sh" ] ; then

    62        . "$sh"

    63     fi

    64  done

    65  unset sh

```

 scheint mir der schönste und auch "update resistenteste" zu sein. Doch leider funktioniert das nicht ganz so wie gewollt.

Aber vielleicht hat ja noch jemand eine Idee oder andere Erfahrungen gemacht.

schon mal vielen Dank für Eure Antworten!

----------

## xhi2018

 *franzf wrote:*   

> 
> 
> Ich habe mir eine Datei angelegt /etc/profile_source, in welcher alles Mögliche an persönlicher Konfiguration drin steht.
> 
> Nach einem Update und darauf folgendem etc-update (bei dem ich eben /etc/profile nach (sehr) kurzer Einsicht einfach updaten lass) mach ich ein
> ...

 

Hallo franzf,

danke für Deine Antwort. Das wäre eine Lösung - ja. Aber da muss man nach einem update auch aufpassen nix zu vergessen.  Wenn ich mehrere Systeme zu betreuen habe - bzw. die Betreuung wird auch von anderen Leuten gemacht dann suche ich mir lieber einen Weg wo man nicht so viel vergessen kann weil vieles automatisch geht. Deshalb: 

Der Tip hilft - danke! 

aber 100%ig zusagen tut er mir nicht ...   :Wink: 

In diesem Sinne - nicht böse sein, ja !?    :Smile: 

----------

## Kaini

 *Quote:*   

> Die Doku kenne ich, wenn ich mir diese durchlese und richtig verstehe, dann kann ich nicht nachvollziehen dass /etc/bash/bashrc die richtige Stelle sein soll damit der Punkt 2.) - aus meinem ersten Posting - erfüllt ist.
> 
> Hier mal ein paar Infos von meinem System:
> 
> ```
> ...

 

Allerdings befindet sich /etc in der Variable und das eine schließt das andere ein, soweit ich weiß. Und mit etc-update kannst du dann ja das machtvolle merge verwenden. Dadurch bleiben deine Zeilen erhalten und du kannst zusätzlich die Patchs einspielen. Wenn ich jetzt die Frage falsch verstanden habe dann sorry.

----------

## xhi2018

Hallo Kaini,

 *Kaini wrote:*   

>  *Quote:*   Die Doku kenne ich, wenn ich mir diese durchlese und richtig verstehe, dann kann ich nicht nachvollziehen dass /etc/bash/bashrc die richtige Stelle sein soll damit der Punkt 2.) - aus meinem ersten Posting - erfüllt ist.
> 
> Hier mal ein paar Infos von meinem System:
> 
> ```
> ...

 

Hmm - so verstehe ich die Gentoo Dokumentation von oben zwar nicht aber wenn ich zurückdenke könntest Du recht haben. Bei den Updates von www-servers/apache wurde ich nach dem update über emerge darauf hingewiesen, dass neue Konfigurationen des ebuilds www-servers/apache im Verzeichnis /etc/apache2/ vorhanden sind und diese mit etc-update zu bearbeiten sind. Dabei befindet sich das Verzeichnis /etc/apache2/  auch nicht in der in der CONFIG_PROTECT Variable und trotzdem habe ich den Hinweis bekommen und die Konfiguration wurde !_nicht_! einfach so überschrieben.   :Cool: 

Es könnte also schon so sein wie Du sagst, dass durch die Angabe von /etc/ in der CONFIG_PROTECT Variable auch alle  Unterverzeichnisse von /etc/ "geschützt" sind.

 *Kaini wrote:*   

> Und mit etc-update kannst du dann ja das machtvolle merge verwenden. Dadurch bleiben deine Zeilen erhalten und du kannst zusätzlich die Patchs einspielen. Wenn ich jetzt die Frage falsch verstanden habe dann sorry.

 

Genau das manuelle zusammen mergen möchte ich so weit wie nur irgendwie möglich vermeiden.

Ich stell mir die Situation vor, dass sich bei einem grösseren Update sehr, sehr viele Konfigurationsdateien ändern. Dann könnte es ja möglich sein, dass jemand beim etc-update die Übersicht verliert und aus versehen die Konfiguration aus der neuen Version komplett übernimmt und die eigenen Anpassungen sind erst mal weg - nur Feiglinge sichern ...  :Wink: 

Oder aber du hast sehr viel individuelle Änderungen und musst dann jedes mal - wie von Dir erwähnt - manuell über etc-update und merge die aktive Konfiguration und die Updates/Änderungen der neuen Version zu einer neuen Konfiguration zusammen mergen ... Das finde ich aufwendig und fehleranfällig.

[UPDATE:]

Ich hab' aktuell zwei Gentoo Installationen:

- unter WinXP in einer VMWare (da funktioniert die Tastenkombination [STRG]+[ALT]+[Fx] nicht)

- auf einem Rechner - normal auf der Festplatte (da funktioniert die Tastenkombination [STRG]+[ALT]+[Fx])

Auf der Festplatteninstallation kann ich also auf die Konsole wechseln und mich dort mit dem user oder root anmelden und habe den gewünschten bash prompt. Also scheint die Lösung die Konfigurationen bzw. Initialisierungen der bash in separate *.sh Files im Verzeichnis /etc/profile.d/ abzulegen zu funktionieren. 

Ich werde mir mal anschauen welche bash startup Dateien in welcher Reihenfolge bei der grafischen Anmeldung beachtet werden. Vielleicht hat ja schon jemand Erfahrungen dazu.

Tschau & vielen Dank für die Antworten!

----------

## musv

 *xhi2018 wrote:*   

> Ich stell mir die Situation vor, dass sich bei einem grösseren Update sehr, sehr viele Konfigurationsdateien ändern. Dann könnte es ja möglich sein, dass jemand beim etc-update die Übersicht verliert und aus versehen die Konfiguration aus der neuen Version komplett übernimmt und die eigenen Anpassungen sind erst mal weg - nur Feiglinge sichern ... 
> 
> Oder aber du hast sehr viel individuelle Änderungen und musst dann jedes mal - wie von Dir erwähnt - manuell über etc-update und merge die aktive Konfiguration und die Updates/Änderungen der neuen Version zu einer neuen Konfiguration zusammen mergen ... Das finde ich aufwendig und fehleranfällig.

 

Ähm, als ein Gentoo zu pflegen, ist schon mit etwas Aufwand verbunden. Und aufgrund Deiner oben genannten Bedenken beinhaltet etc-update ja die Funktionalität, die neuen Configs zu löschen oder interaktiv mit der bereits bestehenden zu verbinden. 

Wenn es Dir zu aufwendig ist, schmeiß halt einfach alle neuen Configdateien weg. Maximal hast du dann bei irgendwelchen Majorrelease-Updates das Problem, daß es Dir das System teilweise zerschießen könnte.

----------

## Fabiolla

Hallo,

 *Quote:*   

> 
> 
> Ich werde mir mal anschauen welche bash startup Dateien in welcher Reihenfolge bei der grafischen Anmeldung beachtet werden. Vielleicht hat ja schon jemand Erfahrungen dazu. 
> 
> 

 

Hab mal im Bash-Handbuch nachgeschaut, die Konfigurationsdateien werden folgend ausgewertet:

Login-Shell

1. Eine globale Konfigurationsdatei, im Regelfall /etc/profile

2. Benutzerdefinierte Konfigurationsdateien im Home-Verzeichis in folgender Reihenfolge:

~/.bash_profile, ~/.bash_login, ~/.profile -> die zuerst gefundene Konfigurationsdatei wird herangezogen.

Interaktive-Shell

1. nur ~/.bashrc

Das Problem mit der unterschiedlichen Auswertung von Konfigurationsdateien von Login und Interaktiven Shells kann man

folgend lösen:

1. Die Datei ~/.bash_profile anlegen und in dieser Datei ein "source" auf die ~/.bashrc ausführen

```

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

```

2. In der Datei ~/.bashrc die gewünschte Konfiguration festlegen.

 *Quote:*   

> 
> 
> Es sieht so aus, dass bei normalen Usern unter X KDE die /etc/profile nicht beachtet - keine login shell gestartet - wird?!
> 
> Erst ein su - user gibt mir den gewünschten bash prompt aber leider erst dann und nicht sofort wenn ich eine "KDE konsole"
> ...

 

Damit das funktioniert, musst du in der ~/.bashrc ein source auf "/etc/profile" ausführen - die Interaktive-Shell wertet

die /etc/profile nicht aus, außer wenn du es in der ~/.bashrc explizit angibst.

-> Dies wäre auch ein zweiter Lösungsansatz für eine globale Konfiguration der Bash, welche vor Updates geschützt ist.

Wenn du z.B eine /etc/profile.local anlegst und aus der ~/.bashrc ein source auf diese Datei ausführst, hast du

a) eine globale Konfiguration

b) einen Schutz vor Updates, da diese Datei von dir erstellt worden ist und nicht von Portage behandelt wird.

lg

----------

## mv

 *Fabiolla wrote:*   

> Interaktive-Shell
> 
> 1. nur ~/.bashrc

 

So steht es zwar in der Dokumentation, aber unter Gentoo ist das nicht ganz richtig: Da wird zusätzlich (vorher) /etc/bash/bashrc eingelesen. (Das ist ein semi-dokumentierter Patch der bash.)

----------

## xhi2018

Hallo Fabiolla,

hallo mv,

danke für die Tipps.

 *Fabiolla wrote:*   

> 
> 
> Hab mal im Bash-Handbuch nachgeschaut, die Konfigurationsdateien werden folgend ausgewertet:
> 
> Login-Shell
> ...

 

ja - so verstehe ich das auch, deshalb hab ich jetzt mal folgendes gemacht. In diesen Dateien habe ich als erste Anweisung folgende Zeile eingefügt:

```

/etc/profile                INVOCATION="${INVOCATION};/etc/profile"

/etc/bash/bashrc            INVOCATION="${INVOCATION};/etc/bash/bashrc"

/home/user/.bash_profile    INVOCATION="${INVOCATION};${HOME}/.bash_profile"

/home/user/.bashrc          INVOCATION="${INVOCATION};${HOME}/.bashrc"

```

wenn ich unter X in der "KDE konsole" oder "yakuake" dann die Variable $INVOCATION ausgebe bekomme ich dieses hier:

```
user@hermes ~ $ echo  $INVOCATION

;/etc/bash/bashrc;/home/user/.bashrc

```

in der Konsole[STRG]+[ALT]+[Fx] bekomme ich dieses hier:

```

user@hermes ~ $ echo  $INVOCATION

;/etc/profile;/etc/bash/bashrc;/home/user/.bash_profile;/home/user/.bashrc
```

 *mv wrote:*   

>  *Fabiolla wrote:*   Interaktive-Shell
> 
> 1. nur ~/.bashrc 
> 
> So steht es zwar in der Dokumentation, aber unter Gentoo ist das nicht ganz richtig: Da wird zusätzlich (vorher) /etc/bash/bashrc eingelesen. (Das ist ein semi-dokumentierter Patch der bash.)

 

Damit hast du wohl recht - irgendwie/irgendwo/irgendwann  :Wink:  - wird die /etc/bash/bashrc wohl bei einer interaktiven non-login shell (also unter X in der "KDE konsole" oder "yakuake") eingelesen. Woher hast Du die Info  :Question:   Das Standardverhalten ist dies nach man bash - soweit ich es verstehe - ja nicht  :Exclamation: 

Wenn jemand Infos darüber hat wie der Start von X und des DisplayManagers und von KDE unter gentoo abläuft dann würden mich die gerne interessieren, denn wo wird z.B. die $PATH definiert?

Unter X in der "KDE konsole" oder "yakuake" 

```
user@hermes ~ $ echo $PATH

/usr/kde/3.5/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/3.5/bin:/usr/qt/3/bin

```

aber in den beiden bash startup Dateien /etc/bash/bashrc und /home/user/.bashrc wird diese Variable nicht definiert:

```

user@hermes ~ $ grep PATH /etc/bash/bashrc

user@hermes ~ $ grep PATH .bashrc
```

 - vielen Dank!

----------

## mv

 *xhi2018 wrote:*   

> Woher hast Du die Info 

 

```
grep -3R SYS_BASHRC /usr/portage/app-shells/bash
```

 *Quote:*   

> aber in den beiden bash startup Dateien /etc/bash/bashrc und /home/user/.bashrc wird diese Variable nicht definiert:

 

Wozu auch? Sie wird ja in /etc/profile (also von der login-Shell) gesetzt und exportiert. (Möglicherweise sourced auch eine bashrc die /etc/profile - die Originale habe ich jetzt nicht zu Hand.)

----------

## musv

 *xhi2018 wrote:*   

> 
> 
> wenn ich unter X in der "KDE konsole" oder "yakuake" dann die Variable $INVOCATION ausgebe bekomme ich dieses hier:
> 
> ```
> ...

 

Wenn du Dich im KDE neu einloggen würdest, würde die Anzeige auch anders aussehen. Ich mußte desletztens mal eine Software installieren, wo jeder Nutzer in seinem Homeverzeichnis beim Einloggen automatisch ein bestimmtes Verzeichnis erstellt bekommen soll. Ich hab das in die /etc/profile geschrieben, weil die immer beim Login eingelesen wird.

Nochmal zum Verständnis: 

Wenn du Dich in der Konsole (kein X!!!) einloggst, dann wird die /etc/profile geparst, darin steht aber auch wieder ein Verweis auf die /etc/bash/bashrc, die demzufolge auch noch geparst wird. Anschließend werden die Dateien im Homeverzeichnis geparst, um die globalen Variablen der /etc/profile und /etc/bash/bashrc überschreiben zu können. 

Wenn du Dich im KDM einloggst, passiert genau dasselbe, wenn der Windowmanager startet. Wenn du dann 'ne Konsole (xterm, aterm, KDE-Konsole) öffnest, wird natürlich die /etc/profile und /etc/bash/bashrc nicht nochmal geparst. Schließlich loggst du Dich ja nicht neu ein. Wozu also die ganzen Umgebungsvariablen neusetzen? Nur die .bashrc usw. aus dem Homeverzeichnis werden gelesen.

----------

