Bash на Snow Leopard не подчиняется терминальным цветам

4359
Ali Karbassi

С новой версией Snow Leopard OS X обновила версию bash до GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0).

Теперь мой .bashrcустанавливает следующие параметры:

# 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' 

Цвета используются позже для вывода. Раньше это работало в предыдущей версии OSX, но теперь мой вывод не взаимодействует.

Некоторые идеи, которые не сработали.

  • Переключение Terminal.app с 64-битного на 32-битный.
12

3 ответа на вопрос

13
Ali Karbassi

Ответ был на самом деле гораздо проще. Вместо использования \eдля escape-символа используйте \033вместо. Так и идет от

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' 

чтобы:

# 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 Большое спасибо! Я искал исправление весь день. Другое решение будет использовать вместо Zsh :) Robert Audi 13 лет назад 0
Рад, что помогло :) Ali Karbassi 13 лет назад 0
4
Matthew Schinckel

Мой терминал показывает цвета.

Попробуйте использовать что-то вроде:

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

И посмотри, появятся ли цвета.

1
Ande TURNER

Так как цвета не печатаются, использование \[& \]на обоих концах предотвратит разрывы и переносы строк.

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\]' 

Похожие вопросы