質問: シェルスクリプトに指定される shebang が、 ``` #! /bin/sh ``` のように、 ! マークとインタプリターの間にスペースが挿入されているケースをたびたび見かけます。 ``` #!/bin/sh ``` の形式ではなく、このようにスペースをいれて shebang を記述する特別な理由はありますか。
回答: @user10685さんのコメントの関連リンクとそこから辿れる情報で大体出尽くしている感がありますが、私も以前はスペースを入れていました。これは、GNU autoconfのチュートリアルに「4.2BSDでは先頭4バイト"#! /"をマジックナンバーとして読むのでスペースが必要」とあったからです。これは誤りで実際は空白はオプショナルであり、新しい版では直っています。 質問の「理由」は、かつての私にとっては「autoconfのチュートリアルに書いてあったから」となります。同様の理由でスペースを入れてる人も多いんじゃないでしょうか。