Bash on Snow Leopard gehorcht nicht den Endfarben

4513
Ali Karbassi

Mit der neuen Version von Snow Leopard hat OS X die Bash-Version auf aktualisiert GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0).

Nun setzt mein .bashrcdie folgenden Einstellungen:

# Colors export TERM=xterm-color export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32' export CLICOLOR=1  export LSCOLORS=ExGxFxDxCxHxHxCbCeEbEb  # Setup some colors to use later in interactive shell or scripts export COLOR_NC='\e[0m' # No Color export COLOR_WHITE='\e[1;37m' export COLOR_BLACK='\e[0;30m' export COLOR_BLUE='\e[0;34m' export COLOR_LIGHT_BLUE='\e[1;34m' export COLOR_GREEN='\e[0;32m' export COLOR_LIGHT_GREEN='\e[1;32m' export COLOR_CYAN='\e[0;36m' export COLOR_LIGHT_CYAN='\e[1;36m' export COLOR_RED='\e[0;31m' export COLOR_LIGHT_RED='\e[1;31m' export COLOR_PURPLE='\e[0;35m' export COLOR_LIGHT_PURPLE='\e[1;35m' export COLOR_BROWN='\e[0;33m' export COLOR_YELLOW='\e[1;33m' export COLOR_GRAY='\e[1;30m' export COLOR_LIGHT_GRAY='\e[0;37m' 

Die Farben werden später für die Ausgabe verwendet. Früher funktionierte dies in früheren Versionen von OSX, aber meine Ausgabe arbeitete nicht mehr zusammen.

Einige Ideen, die nicht funktioniert haben.

  • Umschalten von Terminal.app von 64-Bit auf 32-Bit.
12

3 Antworten auf die Frage

13
Ali Karbassi

Die Antwort war eigentlich viel einfacher. Statt \efür das Escape-Zeichen zu verwenden, verwenden Sie \033stattdessen. So geht es ab

export COLOR_NC='\e[0m' # No Color export COLOR_WHITE='\e[1;37m' export COLOR_BLACK='\e[0;30m' export COLOR_BLUE='\e[0;34m' export COLOR_LIGHT_BLUE='\e[1;34m' export COLOR_GREEN='\e[0;32m' export COLOR_LIGHT_GREEN='\e[1;32m' export COLOR_CYAN='\e[0;36m' export COLOR_LIGHT_CYAN='\e[1;36m' export COLOR_RED='\e[0;31m' export COLOR_LIGHT_RED='\e[1;31m' export COLOR_PURPLE='\e[0;35m' export COLOR_LIGHT_PURPLE='\e[1;35m' export COLOR_BROWN='\e[0;33m' export COLOR_YELLOW='\e[1;33m' export COLOR_GRAY='\e[1;30m' export COLOR_LIGHT_GRAY='\e[0;37m' 

zu:

# Setup some colors to use later in interactive shell or scripts export COLOR_NC='\033[0m' # No Color export COLOR_WHITE='\033[1;37m' export COLOR_BLACK='\033[0;30m' export COLOR_BLUE='\033[0;34m' export COLOR_LIGHT_BLUE='\033[1;34m' export COLOR_GREEN='\033[0;32m' export COLOR_LIGHT_GREEN='\033[1;32m' export COLOR_CYAN='\033[0;36m' export COLOR_LIGHT_CYAN='\033[1;36m' export COLOR_RED='\033[0;31m' export COLOR_LIGHT_RED='\033[1;31m' export COLOR_PURPLE='\033[0;35m' export COLOR_LIGHT_PURPLE='\033[1;35m' export COLOR_BROWN='\033[0;33m' export COLOR_YELLOW='\033[1;33m' export COLOR_GRAY='\033[1;30m' export COLOR_LIGHT_GRAY='\033[0;37m' 
karbassi Vielen Dank! Ich habe den ganzen Tag nach einer Lösung gesucht. Eine andere Lösung wäre, stattdessen zsh zu verwenden :) Robert Audi vor 13 Jahren 0
Ich bin froh, dass es geholfen hat :) Ali Karbassi vor 13 Jahren 0
4
Matthew Schinckel

Mein Terminal zeigt Farben.

Versuchen Sie es mit etwas wie:

PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;33m\]\w\[\033[00m\]\$ ' 

Und sehen, ob die Farben erscheinen.

1
Ande TURNER

Da die Farben nicht druckbar sind, verhindert die Verwendung von \[& \]an einem der Enden, dass der Abstand zwischen Zeilenabstand und Zeilenumbruch unterbrochen wird.

export COLOR_NC='\[\033[0m\]' # No Color export COLOR_WHITE='\[\033[1;37m\]' export COLOR_BLACK='\[\033[0;30m\]' export COLOR_BLUE='\[\033[0;34m\]' export COLOR_LIGHT_BLUE='\[\033[1;34m\]' export COLOR_GREEN='\[\033[0;32m\]' export COLOR_LIGHT_GREEN='\[\033[1;32m\]' export COLOR_CYAN='\[\033[0;36m\]' export COLOR_LIGHT_CYAN='\[\033[1;36m\]' export COLOR_RED='\[\033[0;31m\]' export COLOR_LIGHT_RED='\[\033[1;31m\]' export COLOR_PURPLE='\[\033[0;35m\]' export COLOR_LIGHT_PURPLE='\[\033[1;35m\]' export COLOR_BROWN='\[\033[0;33m\]' export COLOR_YELLOW='\[\033[1;33m\]' export COLOR_GRAY='\[\033[1;30m\]' export COLOR_LIGHT_GRAY='\[\033[0;37m\]'