solarized カラーテーマを端末で機能させようとしています。手順を読みました ここ しかし、次のdircolorsエラーが発生します:
dircolors: `/home/avazquez/.dircolors_zsh':90: unrecognized keyword RESET
dircolors: `/home/avazquez/.dircolors_zsh':94: unrecognized keyword MULTIHARDLINK
dircolors: `/home/avazquez/.dircolors_zsh':103: unrecognized keyword CAPABILITY
実行時:
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi
zsh(最新バージョン)の.zshrc
から(Ubuntuのssh -X
からgnome-terminal
にリモートアクセスします)。
問題の.dircolors
ファイルへのパスは ここ であり、問題のある行は特別なファイル定義の一部のようです。
## Special files
NORMAL 00;38;5;244 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 00;38;5;33 # directory 01;34
LINK 01;38;5;37 # symbolic link. (If you set this to 'target' instead of a
# numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 48;5;230;38;5;136;01 # pipe
SOCK 48;5;230;38;5;136;01 # socket
DOOR 48;5;230;38;5;136;01 # door
BLK 48;5;230;38;5;244;01 # block device driver
CHR 48;5;230;38;5;244;01 # character device driver
Orphan 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;38;5;64
それはzsh
とはほとんど関係がありません。 zsh
はGNU ls
のように色付きの補完をサポートします(ディレクトリの場合はblue、greenのように)実行可能ファイルの場合...)、GNU ls
と同じ構成ディレクティブをサポートします。
GNU ls
カラー設定は、LS_COLORS
環境変数を介して行われます。その変数にln=01;36
が含まれている場合、それはシンボリックリンクが太字のシアンでレンダリングされることを意味します(36
は前景のシアンのANSIカラーコードであり、01
は太字です)。
zsh
では、次の方法で同じことができます。
zstyle ':completion:*' list-colors 'ln=01;36'
実際には、通常、zsh
色付きの補完を次のように構成します。
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
したがって、zsh
は、GNU lsと同じ方法で補完を色付けします。
LS_COLORS
変数の内容を簡単に記述できるように、GNU ls
にはdircolors
コマンドが付属しています。このコマンドは、入力として、冗長なコンテンツ(構成ファイルには環境変数のようにスペースの制約がないため)、端末に適したLS_COLORS
変数の対応するコンテンツを生成します。
上にあります:
LINK 01;38;5;37
01
はまだ太字ですが、38;5;37
は、88色または256色をサポートするxterm
のような端末の拡張カラーモードの仕様です。
これは前景色37で、ANSIカラー6のデフォルトカラー(少なくとも私のxterm
ではrgb:00/af/af
、ここではcyan3
)よりもわずかに暗いシアン(rgb:00/cd/cd
)の色合いです。
~$ tput setaf 37 | sed l
\033[38;5;37m$
dircolors
を通過すると、ln=38;5;37
になります。
複数のハードリンクを持つファイルがデフォルトの色でレンダリングされることを示すMULTIHARDLINK 00
もあります。これは、mh=00
の$LS_COLORS
に変換されます。
ただし、これは比較的最近のバージョンのls
/dircolors
で導入されました。以前はHARDLINK
/hl
でしたが、2009年にcoreutils7.5でMULTIHARDLINK
/mh
に名前が変更されました。これは、より正しい表現の選択でした。
古いバージョンのdircolors
を使用しているようです。 zsh
はhl
もmh
もサポートしていないことに注意してください(文句は言わないので無視してください)。デフォルトの色に設定されているだけなので、その行を削除します。
RESET
/rs
はcoreutils6.11で追加され、zsh
でもサポートされていません。
CAPABILITY
/ca
はcoreutils7.0で追加され、zsh
でもサポートされていません。
zsh
でサポートされていないものはおそらくもっとありますが(詳細はinfo zsh 'The zsh/complist Module'
を参照)、繰り返しますが、zsh
はサポートされていないものを無視します。
そこに発生するエラーはdircolors
からのものです。これは、dircolors
ファイルに新しいバージョンのcoreutils(GNU ls
とdircolors
を含むユーティリティスイート)がある)を書いた人がいることを意味します。そのファイルでサポートされていない行を削除するだけです。