
Я только что перешел на Macbook Air. Я установил zsh с помощью homebrew, но когда я использую часть кода, который у меня (изначально был) в моем .zshrc
, я получаю ошибку, говорящую, что .dircolors was not found
.
Ниже приведен рассматриваемый код:
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
Не dircolors
поставляется с Mac OS X? Как мне его установить?
Обновлять:
Если я запускаю dircolors непосредственно в оболочке, то получаю:
bash: dircolors; command not found
решение1
Команда dircolors
специфична для GNU coreutils, поэтому вы найдете ее в невстроенном Linux и Cygwin, но не в других системах Unix, таких как OSX. Сгенерированные настройки в вашем .zshrc
не переносятся в OSX.
Поскольку вы используете цвета по умолчанию, вы можете передать пустую строку в
list-colors
для получения цветов в завершениях файлов.
Для цветов сфактическая ls
команда, установите CLICOLOR
переменную среды в OSX, а также укажите LSCOLORS
(формат см. в руководстве), хотите ли вы изменить цвета.
if whence dircolors >/dev/null; then
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
alias ls='ls --color'
else
export CLICOLOR=1
zstyle ':completion:*:default' list-colors ''
fi
Если вы хотите установить цвета, отличные от цветов по умолчанию ( dircolors
с аргументом файла), я бы рекомендовал жестко закодировать вывод dircolors -b ~/.dircolors
в вашем файле .zshrc
и использовать эти настройки как для zsh, так и для GNU ls.
LS_COLORS=…
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
if whence dircolors >/dev/null; then
export LS_COLORS
alias ls='ls --color'
else
export CLICOLOR=1
LSCOLORS=…
fi
решение2
Поскольку FreeBSD не имеет команд dircolor
, а OS X имеет базу FreeBSD, вы не можете ее использовать.
Самое простое — использовать
export CLICOLOR=YES
в вашем .zshrc
и .bashrc
и удалить eval "$(dircolors -b)"
. Для изменения цвета вы можете использовать переменную окружения LSCOLORS
. Например:
export LSCOLORS="Gxfxcxdxbxegedabagacad"
Более подробную информацию об этом можно найти на странице руководства
man ls
Альтернативой export CLICOLOR=YES
является использование псевдонима дляls
alias ls=ls -G
Некоторые предлагали установить GNU-Coreutils из Mac Ports, но по-моему это перебор. Вы можете найти портздесь
решение3
Я больше не занимаюсь всем этим для Mac, поэтому мне не на чем тестировать, но в поисках того, как заставить это работать на FreeBSD, мне удалось выяснить, как заставить это работать из портов. Я помню, что в OSX есть такие вещи, как brew
и macports
- Попробуйте установить GNU coreutils отсюда, если вы действительно хотите dircolors
работать. Мне также пришлось задать псевдоним для dircolors
to, gdircolors
так как это команда, под которой порты FreeBSD устанавливают веселье. Удачи всем, кто в конечном итоге попробует это!
Вот ссылка на то, как кто-то запускает coreutils с помощью brew:
http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
решение4
Вы можете установить dircolors
из пакета Homebrew coreutils:
brew install coreutils
Однако GNU coreutils не включены в PATH
по умолчанию. Отредактируйте свой ~/.zshrc
, ~/.bashrc
и добавьте:
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
Теперь после запуска нового сеанса оболочки dircolors
все должно работать.