よくbashでコマンドの一覧を取得する際に利用するcompgenだが、残念ながらzshではデフォルトで有効になっていない。 で、その状態でzshでPATH配下にあるコマンドの一覧を取得したいといった場合、どうすればいいだろう。

zshでは、以下のコマンドでPATH配下にあるコマンドの一覧が取得できる。

whence -pm "*" # フルパス表示
print -rl -- $commands # フルパス表示
print -rl -- ${(ko)commands} # コマンドのみ表示

ちなみに、以下のコマンドをzshrcなどに記述しておくことで、zshでもcompgenを利用できるようになる。

autoload -Uz bashcompinit
bashcompinit