zsh: no matches found について

さて、今回は、zsh のお話。
ちょっとプログラムの関係で、コマンドライン引数から記号( # とか)を指定したら

zsh: no matches found: #

とかってなってしまいます。

あ、コマンドライン引数っていうのは、main 関数の引数のこと。つまり、

int main(int argc, char *argv[])

のやつですね。要するに argv です。

bash でプログラムを実行したら普通に実行出来たので、これは zshせいらしい...。

と、いうわけで、.zshrc に以下の記述を追加します。

setopt nonomatch

これで source で .zshrc を読み込んであげればオッケー。
実行出来るはず。

楽勝でしたとさ。

エラーの原因は、グロッビングが原因らしい。

setopt EXTENDED_GLOB

でグロッビングでの特殊文字の使用をするという形になっていて、そこに反応したせいで、上の引数の # がグロブでの使用となり、 no matches found となってしまった、、、という。
なんともややこしい...。

この記述( setopt nonomatch )もどうやら少し反則的な書き方らしいけど、解決したのでまあ良しかな?
今回はこんなところで。