• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Bashfarbe ändern -> wie?

Hi zusammen!
Ich würde gerne in der Konsole die Schriftfarbe verändern.
Also das der normale User ne blaue Schrift hat und Root ne rote. aber irgendwie bekomm ich das nicht hin!

Dann soll auch beim User der Ausdruck Nutzer mit im Bash stehn und bei Root soll Root mit drin stehn:

in etwa so:
johnny@prinzerl-mobile:~ Nutzer $>
root/home/johnny Root #>

Die Schrift vom Nutzer soll blau sein und wenn ich mich als root anmelde soll das root in rot sein.

Code:
test -s ~/.alias && . ~/.alias || true
if test \( "$TERM" = "xterm" -o "${TERM#screen}" != "$TERM" \) -a -z "$EMACS"
then
 export PS1="\e[1;0m\u\e[0;0m@\h:\e[1;0m\w\e[0;34m Nutzer $>\e[0m "
else
 export PS1="\e[1;0m\u\e[1;0m\w\e[0;31m Root #>\e[0m "
fi

Ich habs mal so probiert aber irgendwie klappt das nicht.

Es geht zwar das von Nutzer aber wenn ich dann aber als root mit su anmelde dann bleibt die Standarteinstellung. Wenn ich aber folgende Zeile

Code:
export PS1="\e[1;0m\u\e[1;0m\w\e[0;31m Root #>\e[0m "

einfach in der Konsole eingebe wenn ich als su angemeldet bin dann klappt es.

Ich hab den oberen Code in der localen .bashrc reingeschrieben.

Hat da jemand von euch ne Lösung?[/code]
 

jensiii

Member
Das ist alles in den Manpages zur bash erläutert, siehe man bash: zB für das Aussehen des Prompt:

Code:
When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete
       a command.  Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
              \a     an ASCII bell character (07)
              \d     the date in "Weekday Month Date" format (e.g., "Tue May 26")
              \D{format}
                     the  format  is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation.
                     The braces are required
              \e     an ASCII escape character (033)
              \h     the hostname up to the first `.'
              \H     the hostname
              \j     the number of jobs currently managed by the shell
              \l     the basename of the shell's terminal device name
              \n     newline
              \r     carriage return
              \s     the name of the shell, the basename of $0 (the portion following the final slash)
              \t     the current time in 24-hour HH:MM:SS format
              \T     the current time in 12-hour HH:MM:SS format
              \@     the current time in 12-hour am/pm format
              \A     the current time in 24-hour HH:MM format
              \u     the username of the current user
              \v     the version of bash (e.g., 2.00)
              \V     the release of bash, version + patch level (e.g., 2.00.0)
              \w     the current working directory, with $HOME abbreviated with a tilde
              \W     the basename of the current working directory, with $HOME abbreviated with a tilde
              \!     the history number of this command
              \#     the command number of this command
              \$     if the effective UID is 0, a #, otherwise a $
              \nnn   the character corresponding to the octal number nnn

Die Farbeinstellung erreichst Du mit dem ändern der Zahlen in Deinem PS1-Code. Folgendes Script gibt Dir ein paar Beispiele:

Code:
#!/bin/bash
#
#
echo "Auf Hellgrau:            Auf Schwarz:"
echo -e "\033[47m\033[1;37m   Weiss      \033[0m\
 1;37m \
\033[40m\033[1;37m   Weiss      \033[0m"
echo -e "\033[47m\033[37m   Hellgrau   \033[0m\
   37m \
\033[40m\033[37m   Hellgrau   \033[0m"
echo -e "\033[47m\033[1;30m   Grau       \033[0m\
 1;30m \
\033[40m\033[1;30m   Grau       \033[0m"
echo -e "\033[47m\033[30m   Schwarz    \033[0m\
   30m \
\033[40m\033[30m   Schwarz    \033[0m"
echo -e "\033[47m\033[31m   Rot        \033[0m\
   31m \
\033[40m\033[31m   Rot        \033[0m"
echo -e "\033[47m\033[1;31m   Hellrot    \033[0m\
 1;31m \
\033[40m\033[1;31m   Hellrot    \033[0m"
echo -e "\033[47m\033[32m   Grün       \033[0m\
   32m \
\033[40m\033[32m   Grün       \033[0m"
echo -e "\033[47m\033[1;32m   Hellgrün   \033[0m\
 1;32m \
\033[40m\033[1;32m   Hellgrün   \033[0m"
echo -e "\033[47m\033[33m   Braun      \033[0m\
   33m \
\033[40m\033[33m   Braun      \033[0m"
echo -e "\033[47m\033[1;33m   Gelb       \033[0m\
 1;33m \
\033[40m\033[1;33m   Gelb       \033[0m"
echo -e "\033[47m\033[34m   Blau       \033[0m\
   34m \
\033[40m\033[34m   Blau       \033[0m"
echo -e "\033[47m\033[1;34m   Hellbau    \033[0m\
 1;34m \
\033[40m\033[1;34m   Hellblau   \033[0m"
echo -e "\033[47m\033[35m   Purpur     \033[0m\
   35m \
\033[40m\033[35m   Purpur     \033[0m"
echo -e "\033[47m\033[1;35m   Rosa       \033[0m\
 1;35m \
\033[40m\033[1;35m   Rosa       \033[0m"
echo -e "\033[47m\033[36m   Cyan       \033[0m\
   36m \
\033[40m\033[36m   Cyan       \033[0m"
echo -e "\033[47m\033[1;36m   Hellcyan   \033[0m\
 1;36m \
\033[40m\033[1;36m   Hellcyan   \033[0m"

Jeder User muss natürlich die Angaben in seiner Umgebung definiert haben, also wenn Du mit su zu root wechselst, muss für root der Prompt ebenfalls festgelegt werden.

Für einen normalen User mit gelbem Prompt sieht das zB so aus:

Code:
export PS1="\[\033[1;33m\]\[\e]2;\u&\h:\w\007\e]1;\h\007\]\u&\h:\w> \[\033[0m\] "
 
\033 -> \e
\007 -> \a
is kürzer ;-)
Farbtabelle, wenn man hxtools hat, `/usr/lib/hxtools/examples/ctab`.
 
Meinst Du damit das ich für Root den Eintrag in dessen .bashrc im Homeverzeichnis von Root machen soll?
Ich meine das wenn ich mich auf der Konsole als mit su als Root anmelde er dann die Farbänderung durchführt!

Also z.B. in die bashrc des Users (/home/user/.bashrc)
Code:
export PS1="\e[1;0m\u\e[0;0m@\h:\e[1;0m\w\e[0;34m Nutzer $>\e[0m "

und für Root in die bashrc (/root/.bashrc)
Code:
export PS1="\e[1;0m\u\e[1;0m\w\e[0;31m Root #>\e[0m "


Wenn ich mich dann als su an der Konsole anmelde, wird dann die .bashrc von Root abgerufen?
 

jensiii

Member
PrinzEisenherz1 schrieb:
Meinst Du damit das ich für Root den Eintrag in dessen .bashrc im Homeverzeichnis von Root machen soll?
Ich meine das wenn ich mich auf der Konsole als mit su als Root anmelde er dann die Farbänderung durchführt! Wenn ich mich dann als su an der Konsole anmelde, wird dann die .bashrc von Root abgerufen?

So ist es.
 
Das werd ich nachher mal ausprobieren!
Jetzt schon mal nen riesen Dank an euch!
Echt klasse! Mal gespannt ob das so klappt!

Ich melde mich nachher nochmal obs geklappt hat :)
 
Also erstmal n riesen dank! Der tip mit der bashrc im Root-Homeverzeichnis hat echt geholfen, jetzt hab ich nur noch ein Problem

ich habe in beiden bashrc`s (User und Root) den ähnlichen Eintrag stehn.
also in Root

export PS1="\A =\e[1;0m\w\e[0;31m ROOT >\e[0m "

in User

export PS1="\A =\e[1;0m\w\e[0;34m NUTZER >\e[0m "


wenn ich als User in der Konsole bin dann soll das NUTZER in blau sein und der Rest schwarz und wenn ich mich mit su als Root anmelde dann soll ROOT rot sein. Dies geht auch bestens bloß macht er mir in der Konsole keinen Zeilenumbruch beim eintippen mehr.
Ich hab da mit sicherheit irgendwo im Befehl nen Wurm drin, bloß wo?!?!
 
So, hab jetzt das Problem gelöst! :)

Ich habe in der .bashrc vom Nutzer folgendes eingetragen:

Code:
export PS1="\[\033[1;0m\]\[\e]2;\A |\w |\007\e]1;\A\007\]\A | \w |\[\033[1;34m NUTZER\[\033[0m>\]"

und in der .bashrc von Root folgendes:

Code:
export PS1="\[\033[1;0m\]\[\e]2;\A |\w |\007\e]1;\A\007\]\A | \w |\[\033[1;31m ADMIN\[\033[0m>\]"

Dadurch wird die Bash vom Nutzer so dargestellt:

16:37 | ~ | NUTZER>

und von Root:

16:38 | /home/nutzer | ADMIN>


Wobei der Name NUTZER in blau eingefärbt ist und der Name ADMIN in rot!

:)

Danke nochmal an alle die mir hier geholfen haben!

MfG
Johnny
 
Oben