「umount」のスペルが「unmount」ではないのはなぜですか?

「umount」のスペルが「unmount」ではないのはなぜですか?

umountこのコマンドが存在しない歴史的または実際的な理由があるかどうか疑問に思いますunmount

答え1

これは次のように戻ります。Unixの最初のバージョン、すべての標準ファイル名の長さは最大6文字です(考えてみてくださいpasswd)。このバージョンも百日咳をサポートしています。ファイル名は8文字です。。ほとんどのコマンドには.c(eg)で終わる関連ソースファイルがあり、デフォルトのumount.c名前で6文字しか残りません。

6文字の制限は、以前の開発リリースから引き継がれたか、またはその時点で6文字の制限があったIBMシステムから継承された可能性があります。 (初期のC実装には識別子に6文字の制限がありました。より長い識別子が許可されていますが、コンパイラは最初の6文字だけを確認したので、とはfoobar1同じfoobar2変数です。)

(原因が不明なエラーでスペルをリストしたマニュアルページが覚えているようですが、umount今は見つかりません。)

答え2

しばらく間違った情報があったようです。

コマンドが短縮された名前を持つ最も可能性の高い理由は、コマンドがumount使用するシステムコールの名前から派生したからです umount()

「オフロード」システムコールにその名前が付けられた理由umount()は、一部のシステムタイプでは、初期リンカが外部識別子の長さを6文字(大文字と小文字の1つのみ)に制限したためです(そして、これらのツールとの整合性を維持するために)。意味がある)当時)「umount」は「unmount」の略語の論理形式でした。初版179ページを参照Cプログラミング言語出版時に興味のあるさまざまなシステムの外部識別子属性のリストを取得します。

また、初期のCコンパイラでは、識別子の最初の8文字を重要な文字として扱いましたが、より長い識別子を受け入れました。 (K&R 33ページ)

シンボルテーブルの識別子の長さは次のとおりです。何もない少なくとも、Unixではファイル名の長さを直接処理する方法はありません(V1現在、Unixシンボルテーブルには識別子として8文字がありますが、V1マニュアルにはアセンブラ最大7バイトのシンボルを生成)。

答え3

関連情報