fastix®: Bash Konsole versaut (Teil 2)

Beitrag lesen

Moin!

Die .bashrc und .bash_profile in meinem Home Verzeichnis sind es mal nicht.

Dann gibt es noch eine .bashrc und .bash_profile in einem Verzeichnis /etc/skel, was auch immer das bringen mag, aber diese Dateien haben ebenfalls keinen Effekt auf die Konsole.

/etc/skel ist in etwa das, was in windows dieses c:\dokumente und einstellungen\default user\ darstellt. Es ist der Ordner, der bei der Neuanlage eines Benutzers kopiert wird. Änderungen wirken sich also nur für neu angelegte Benutzer aus.

Wenn Du die Dateien aus /etc/skel in Dein Home-Verzeichnis kopierst, dann hast Du wieder die Default-Einstellungen eines normalen Benutzers.

Wenn Du die Dateien aus einem Benutzerverzeichniss nach /etc/skel kopierst, dann hat jeder neue Benutzer diese Dateien und die darin befindlichen Einstellungen.

Das ist alles, wie es bei Windows auch ist. Nur im Detail anders. (Es ist genau genommen bei Windows und bei Linux ähnlich wie bei Unix)

Es nervt ganz schön, dass als root immer "gentoo VERZEICHNIS #" statt "root@gentoo VERZEICHNIS" in der bash steht, also woher nimmt Gentoo dieses "gentoo VERZEICHNIS #"? (wobei gentoo mein hostname ist)

Das geht letztendlich, wie bei Windows auch. Zuerst musst Du festellen, welches Dein Benutzerverzeichnis ist. Das machst Du am besten mit:

grep benutzername /etc/passwd

Suchst Du für den root?:

grep root /etc/passwd

Das Ergebnis könnte so aussehen:
root:x:0:0:root:/:/bin/bash

In der vorletzten Spalte steht das Benutzerverzeichnis.

Das Prompt steht in der Variable PS1.

Ausgeben und anschauen mit echo $PS1 oder echo "{PS1}"

Du kannst mit
PSbackup=$PS1
und nachfolgend
PS1="c:> "
etwas Spaß haben :)
Rückweg? PS1=$PSbackup.

Gib Dir doch mal die Variable aus: echo $PS1

Schau Dir das Ergebnis an. Der erste Teil der Übung ist beendet. Du kannst eine Qualmen gehen und Dir ein MS-Dos-Handbuch mitnehmen. Schau mal nach, wie es da war...

---
Wo werden diese Variablen gesetzt?

Bearbeitest Du die .bashrc, .profile oder .bash_login in einem Benutzerverzeichnis, dann betrifft dies die interaktiven Shells des jeweiligen Benutzers:

.profile: sonstige Einstellungen für den Benutzer
.bashrc: Einstellungen der interaktiven bash - diese werden bei jeder neuen Shell gelesen
.bash_login: Eistellungen für die Login-Shell: Wird nur dann abgearbeitet, wenn die Shell eben die Login-Shell ist. Das ist nicht schwer zu begreifen...

Diese Dateien sind optional. Sie müssen nicht existieren...

Bearbeitest Du die .bashrc, .profile oder .bash_login in /etc/skel, dann betrifft das dies, genau wie bei Windows, die interaktiven Shells _zukünftiger_ Benutzer.

Bearbeitest Du die Datei /etc/bash.bashrc oder /profile in /etc, dann bearbeitest Du die Konfiguration für alle Benutzer und den root. Dieser hat bei einigen Distributionen das Benutzerverzeichnis /, bei anderen /root. Bei den meisten Distributionen hat er keine .bashrc und keine .profile in seinem Benutzerverzeichnis.

Wie jetzt?

Ganz einfach. Bei Start einer interaktiven Shell wird zuerst /etc/bash.bashrc abgearbeitet und danach ~/.bashrc. Hat root keine ~/.bashrc wir eben nur /etc/bash.bashrc abgearbeitet. Das ist Dein Baby.

Darin findest Du (z.B. bei SuSE-Linux) einen Abschnitt, der sieht in etwa so aus:

if test "$UID" = 0 ; then
            PS1="${HOST}:"'${PWD}'" # "
        else
            PS1="${USER}@${HOST}:"'${PWD}'"> "
        fi

Was macht dieser Abschnitt?

ist Benutzer id = 0 (ist der Benutzer root?); dann
    PS1 = "hostname:verzeichnis # '
Sonst
    PS1 = "benutzername@hostname:verzeichnis > '
fertig

Da kannst Du ran. Kleines Problem: Bei mir steht in den ersten Zeilen:

/etc/bash.bashrc for SuSE Linux

PLEASE DO NOT CHANGE /etc/bash.bashrc There are chances that your changes

will be lost during system upgrades.  Instead use /etc/bash.bashrc.local

for your local settings, favourite global aliases, VISUAL and EDITOR

variables, etc ...

Ups... was das? Aha. Diese Date wird bei Updates/Upgrades überschrieben. Ich soll meine Änderungswünsche in  /etc/bash.bashrc.local verewigen. Why not?

Der Aufruf dieser Date ist auch in den letzten Zeilen verewigt:
    test -s /etc/bash.bashrc.local && . /etc/bash.bashrc.local
Wenn die Datei existiert soll sie ausgeführt werden.

Ok. Ich bearbeite also die neue Datei /etc/bash.bashrc.local
(Du musst womöglich eine andere nehmen.) und schreibe rein:

# Veränderung des Promptes nur für root
       if test "$UID" = 0 ; then
            PS1="root@${HOST}:"'${PWD}'" # "
       fi

Ergebnis:

fastix@trainer:~>su
Password:
root@trainer:/home/fastix #

Das ist das, was Du wolltest oder?

Ach so: "{USER}" enthält den Benutzername, {HOST} den Hostname, {PWD} das aktuelle Verzeichnis.

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
0 62

Bash Konsole versaut (Teil 2)

Markus Pitha
  • sonstiges
  1. 0
    Christoph Schnauß
    1. 2
      Vinzenz Mai
      1. 0
        Christoph Schnauß
        1. 0
          fastix®
    2. 0
      Markus Pitha
      1. 0
        Christoph Schnauß
        1. 0
          Markus Pitha
          1. 0
            Christoph Schnauß
            1. 0
              Markus Pitha
  2. 0
    uwe
    1. 0
      Christoph Schnauß
      1. 0
        uwe
        1. 2
          Christoph Schnauß
          1. 0
            uwe
            1. 0
              Markus Pitha
              1. 0
                uwe
                1. 0
                  fastix®
                  1. 1
                    uwe
                    1. 0
                      fastix®
                      1. 0
                        Ashura
                        1. 0
                          fastix®
                          1. 0
                            Ashura
                      2. 0
                        uwe
                2. 0
                  Markus Pitha
                  1. 0
                    fastix®
                  2. 0
                    uwe
                    1. 0
                      fastix®
                      1. 0
                        uwe
                        1. 0
                          fastix®
        2. 0
          fastix®
          1. 0
            Ashura
    2. 0
      fastix®
      1. 0
        Ashura
        1. 0
          fastix®
      2. 1
        dedlfix
      3. 0
        molily
        1. 0
          fastix®
          1. 0
            molily
        2. 0
          Markus Pitha
          1. 0
            molily
            1. 0
              fastix®
              1. 0
                uwe
                1. 0
                  fastix®
                  1. 0
                    fastix®
                    1. 0
                      uwe
                      1. 0
                        fastix®
                        1. 0
                          uwe
                          1. 0
                            fastix®
                            1. 0
                              uwe
                              1. 0
                                fastix®
                                1. 0
                                  uwe
                  2. 0
                    uwe
      4. 0
        uwe
        1. 0
          fastix®
          1. 0
            uwe
            1. 0
              fastix®
              1. 0
                uwe
                1. 0
                  fastix®
                  1. 0
                    uwe
        2. 0
          fastix®
  3. 3
    fastix®