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 が残ってしまうのにハマってデバッグに手間取った...

「何もしていないのに急に」なんてことはやっぱり無いよね.