Mac OS X の ls で --color=auto オプションが使えない
Mac OS X (10.6.3) の zsh で alias ls='ls --color=auto' として使っていたのだけれども,.zshrc の特に関係の無い部分を編集していると急にエラーが出るようになり使えなくなった.
ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
BSD 系の ls (/bin/ls) では --color=auto ではなく -G を使う.若干色使いが異なる. FSF 系 (Linux/GNU 系) の ls では --color=auto が使えて Mac OS X では,この ls は /sw/bin に存在する.
なので PATH では /sw/bin を /bin より前に持ってこないと ls --color=auto が使用できない.
/sw/bin を PATH の先頭に追加する部分を消してしまった原因だったようだけど,そもそも /sw/bin/init.sh で /sw/bin が先に来るように設定されているので,
if [ -z "$PATH" ]; then PATH=/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin else prepend_path PATH /sw/bin:/sw/sbin fi export PATH
消してしまったというより,PATH を設定する前に
source /sw/bin/init.sh
をしていれば,不要だった.PATH の設定の後にこれをしていたせいで /sw/bin の追加が必要だった.
Terminal を再起動させないと $PATH が残ってしまうのにハマってデバッグに手間取った...
「何もしていないのに急に」なんてことはやっぱり無いよね.