回答:
これは、Unixの最初のエディションにまでさかのぼりpasswd
ます。このバージョンでは、ファイル名に8文字の百音文字がサポートされていたとしても、標準ファイル名はすべて最大6文字(考えてください)でした。ほとんどのコマンドには、.c
(たとえばumount.c
)で終わるソースファイルが関連付けられており、ベース名には6文字しか残っていません。
6文字の制限は、以前の開発バージョンからの持ち越しであったか、6文字の制限があった当時のIBMシステムから継承された可能性もあります。(初期のCの実装では、識別子に6文字の制限を持っていた-長い識別子は受け入れられたが、コンパイラはだけなので、最初の6つの文字を見てfoobar1
とfoobar2
同じ変数でした。)
(umount
スペルを起源不明のバグとしてリストしたマニュアルページを思い出したと思っていましたが、今は見つけることができません。)
directory
、まだ適合していません)。だから私はなぜpasswd
6文字に切り捨てられたのだろうか(passwd
まだコマンドもなかった、ただ/etc/passwd
)。
urandom
ここにしばらくの間、いくつかの誤情報があったようです。
umount
コマンドが短縮名を持っている理由として最も考えられるのは、コマンドが使用するシステムコールの名前に続くためです umount()
。
「アンマウント」システムコールが名前を持つ可能性のある理由umount()
は、初期のリンカが一部のタイプのシステムで外部識別子の長さを(たった1つの場合の)わずか6文字に制限したためです。当時)、および「umount」は「unmount」の略語の論理形式です。発行時の対象となるさまざまなシステムの外部識別子の特性のリストについては、Cプログラミング言語の第1版の179ページを参照してください。
また、初期のCコンパイラは識別子の最初の8文字を重要なものとして扱いましたが、識別子を長くすることを許可していました。(K&R 33ページ)
シンボルテーブル内の識別子の長さは、少なくともUnix内ではなく、ファイル名の長さと直接関係ないことに注意してください(UnixシンボルテーブルはV1以降、識別子に8文字ありますが、V1マニュアルではアセンブラ" 最大7バイトのシンボルを生成します ")。
.c
(または.s
)拡張子= 8文字のファイル名制限。