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


64

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

回答:


79

これは、Unixの最初のエディションにまでさかのぼりpasswdます。このバージョンでは、ファイル名に8文字の百音文字がサポートされていたとしても、標準ファイル名はすべて最大6文字(考えてください)でした。ほとんどのコマンドには、.c(たとえばumount.c)で終わるソースファイルが関連付けられており、ベース名には6文字しか残っていません。

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

umountスペルを起源不明のバグとしてリストしたマニュアルページを思い出したと思っていましたが、今は見つけることができません。)


21
6文字のコマンド名+ .c(または.s)拡張子= 8文字のファイル名制限。
ギーコサウルス

@geekosaur:ああ、そうです、ソースファイル。あなたが答えを書いたら、私は私のものを削除します。
ジル 'SO-悪であるのをやめる'

5
エン、必要に応じて注釈を付けてください。
-geekosaur

@geekosaur:manページについても考えましたが、V1にはmanコマンドがありませんでした(そして、manページの1つが呼び出されますがdirectory、まだ適合していません)。だから私はなぜpasswd6文字に切り捨てられたのだろうか(passwdまだコマンドもなかった、ただ/etc/passwd)。
ジル 'SO-悪であるのをやめる'

2
多分それは理由も説明するだろう「ではない」という意味のギリシャοὐサフィックス、であるurandom
アンソニー・ガルシア

8

ここにしばらくの間、いくつかの誤情報があったようです。

umountコマンドが短縮名を持っている理由として最も考えられるのは、コマンドが使用するシステムコールの名前に続くためです umount()

「アンマウント」システムコールが名前を持つ可能性のある理由umount()は、初期のリンカが一部のタイプのシステムで外部識別子の長さを(たった1つの場合の)わずか6文字に制限したためです。当時)、および「umount」は「unmount」の略語の論理形式です。発行時の対象となるさまざまなシステムの外部識別子の特性のリストについては、Cプログラミング言語の第1版の179ページを参照してください。

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

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


-1

同じ理由で、creatシステムコールは綴られていませんcreateか?

https://stackoverflow.com/questions/1713457/what-did-ken-thompson-mean-when-he-said-id-spell-create-with-an-e


4
いや。あなたが引用する後悔は、他の答えで6文字の制限が議論されているにもかかわらず、彼らが「e」を追加した可能性があるためです。umountの場合とは異なり、実際に切り捨てられる正当な理由はありません。
ウォーレンヤング

その頃には、できれば文字を切り捨てるのが伝統だったと思います。
シャドゥール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.