2022年12月27日

年内最後の講義。

卒論チェック。

学生さんのMacでscpする時にワイルドカードが使えない問題、原因がわかった。ZshのGlobbingが問題。もしコマンドラインに何にもマッチしないglobbing expressionが含まれていた場合、Zshはデフォルトでエラーを出す。しかし、scpなどでリモートにファイルがある場合は、実際にはファイルがあるのにマッチしないと判断されてしまう。いろいろ細かい制御ができるっぽいが、とりあえずマッチしなかった時にエラーをださないように

setopt nonomatch

を設定すればOK。scpでのワイルドカードの他、GitのHEAD^などにも影響が出るようだ。

しかしこのglob、英単語だと思ってたら、もともとUNIXの/etc/globというコマンド由来で、このコマンド名はglobalの略だとのこと。初期のUNIXのシェルはワイルドカード展開を/etc/globに依存しており、そのために*?といったワイルドカードをglobsglobbingと呼ぶようになったらしい。昔「glob」ってなんだろうと思ってLDOCEで調べたら存在していたので、その単語由来だと思ってた。そちらの方のglobは、なんか液体か泥の塊のことらしい。「a glob of ketchup(ケチャップ一山)」みたいに使う。