web-dev-qa-db-ja.com

「umount」が「unmount」と綴られていないのはなぜですか?

umountコマンドがunmountではない歴史的または実用的な理由があるかどうか疑問に思っています。

65
uloBasEI

これは nixの非常に最初の版 にさかのぼります。このバージョンでは、百日草をサポートしていましたが、すべての標準ファイル名の長さは最大6文字です(passwdと考えてください)。 ファイル名の8文字 。ほとんどのコマンドには、末尾が.cのソースファイル(例:umount.c)があり、ベース名として6文字しか残っていませんでした。

6文字の制限は、以前の開発バージョンからの引き継ぎであるか、6文字の制限があった当時のIBMシステムから継承された可能性もあります。 (初期のCの実装では識別子に6文字の制限がありました—より長い識別子も受け入れられましたが、コンパイラは最初の6文字しか見なかったため、foobar1foobar2は同じ変数でした。)

(起源が不明なバグとしてスペルをリストしたumountのマニュアルページを覚えていたと思いましたが、今は見つかりません。)

しばらくここに誤った情報が表示されているようです。

umountコマンドが省略名を持つ最も可能性の高い理由は、umount()が使用するシステムコールの名前から続くためです。

「unmount」システムコールの名前がumount()であると考えられる理由は、一部のタイプのシステムでは、初期のリンカーが外部識別子の長さを6文字(1ケースのみ)に制限していたためです(そして、当時、このようなツールとの互換性を維持する意味があります)。「umount」は「unmount」の略語の論理形式です。対象となるさまざまなシステムの外部識別子の特性のリストについては、 Cプログラミング言語 の初版の179ページを参照してください。公開時。

また、初期のCコンパイラは識別子の最初の8文字を重要なものとして扱いましたが、識別子を長くすることができました。 (K&R 33ページ)

シンボルテーブル内の識別子の長さは、何もないことに注意してください少なくともUnix(Unixシンボルテーブル、V1以降、 V1マニュアルでは、アセンブラ "が最大7バイトのシンボルを生成することが示されていますが、8文字です" =)。

8
Greg A. Woods