私はまた、いくつかの古いUnixライクなシステムでは空白が許されていないという曖昧な記憶を持っていますが、少しの研究ではそれをサポートしていません。 this Wikipedia articleによると、#!
構文は1月にバージョン8のUnixで導入されました
は、この機能の1980年デニス・リッチーの最初の発表は言う:ように実行されているファイルが始まる場合
システムが変更されました 魔法のキャラクター#!行の残りの部分は、実行されたファイルのためのインタプリタの名前であると理解されます。 以前は(実際には )シェルはこの仕事の多くを行っていました。テキスト のファイル名がコマンドとして入力されたときに自動的に が実行可能モードのテキストファイルで実行されました。施設を システムに入れると、次のような利点があります。
この素晴らしい機会を活用するために[SNIP]
は、あなたのシェルスクリプトの最初の行の左端に
#! /bin/sh
を置きます。ブランク !大丈夫です。完全なパス名を使用します(検索は行われません)。 の時点では、行全体が16文字に制限されていますが、この制限は になります。
これは、いくつかの後にUnixライクなシステムは#!
構文をサポートしますが!
後に空白を許可していませんでしたが、非常に最初の実装は、明示的に許可されていることのブランクを与え、そう思われることを考えます。
leonbloyの答えは、より多くの文脈を提供します。
UPDATE:
Perlインタープリタ自体も、それはカーネルによって認識されないのシステム上、#!
で始まる行を認識します。詳細については、perldoc perlrun
を実行するか、this web pageを参照してください。
#!ラインは常に であるため、スイッチについて検査されます。したがって、1つの引数だけを許可するマシンにいる場合は、#!と を付けてください。ラインを悪くしたり、悪いことに、#! は、-xがプログラムの先頭を見つけるために使用されたとしても、Perlがどのように呼び出されたかにかかわらず、一貫したスイッチ動作を得ることができます。
Perlは、#!
の後に空白も許可します。
(個人的に、私は空白のない#!
行を書くことを好むが、それはどちらかのように動作します。)
あなたは両方との両方の仕事を見てきた場合、それは好みの問題だということを理由に立っ/美的。 –
私はこれがどのようにプログラミングに関係しているのか分かりません。 – ergosys
@JustinPearce:これは安全な仮定ではありません。 '#!'の後ろにスペースを許さないシステムもあるかもしれません。これはスペースのないバージョンを移植性の高いものにします。しかし、明らかになったように、すべてのシステムでブランクが許可されている可能性があります。詳細は私の答えを見てください。 –