ls dir/* でファイルが存在しないとエラーになることを上手く説明できない。

ls dirA/*

というシェルスクリプトを書いてdirAの中にファイルが何もなかった場合にエラーを出して困っていた人に、その理由を上手く説明できませんでした。

ls a*

がファイル「a」にマッチするなら

ls dirA/

と同じ動作になってもいんじゃないかと考えたのだと思うのです。
シェルのファイルグロブやlsコマンドのdオプションやファイルシステムでどのようにファイルが探索されるかといったことを組み合わせれば、きれいに理解と説明ができるかと思うのですが。やっぱりlsのソース読んでないとだめなんですね。