コロンがパス区切り文字として選択された理由


22

コロン(:)がパス区切り文字として選択されたのはなぜですか?

「ディレクトリセパレータ」ではなく「パスセパレータ」を意味することに注意してください。パス区切り記号は、PATH環境変数のエントリ間に配置される記号です。

PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
                     ^ this symbol

コンピューターとソフトウェアのすべては、かつてどこかで行われた意図的な決定でした。たとえば、チルダがホームディレクトリを表す理由(およびviの方向キーにhjklを使用する理由)。この決定の背景を知りたいです。


いくつかのランダムな事実:

パス区切り文字としてコロンを使用すると、名前にコロンを含むディレクトリをパスに追加できなくなります。

POSIXから:

以来<colon>、この文脈では、セパレータで、PATHに使用されるかもしれないディレクトリ名が含まれてはならない<colon>文字が。

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html

コロンをエスケープすることはできないようです。Stack Overflowの@ Random832は、PATHを処理するソースコードを検査しましたが、エスケープメカニズムは見つかりませんでした。

/programming/14661373/how-to-escape-colon-in-path-on-unix


これは/etc/passwd(ホーム列とシェル列のパスも含む)の区切り文字でもあります。
ステファンシャゼル


11
昨日、この質問を調査するのに約30分費やしました。1971年のUnixプログラマーズマニュアルを読みましたが、これはコロンの使用を指定していますが、コロンが(たとえば)パイプ記号よりも選ばれた理由ではありません。Multicsについてもできる限り読みましたが、どうやらPATHにディレクトリが1つしかなかったようです(セパレータは不要です)。ここで良い答えが得られるとは思いませんが、ベテランのUnixユーザーがこの質問に答えられる可能性がある場合は、機会を与えてほしいので、再開することに投票しています。
アンソニーG-モニカの正義

3
シェル/環境変数が行われていない可能性がありますと呼ばれる PATHの導入前(1979年)のUnixバージョン7が、そこにいた:1977年には早くも-delimited検索パスは、  PWB / UNIX(プログラマのワークベンチ)が使用Masheyシェルによって書かれたが、ジョンR.マシー、トンプソンシェルとボーンシェルの間に年代順に落ちた。…(続き)
G-Manは「Reinstate Monica」と言います

3
(続き)…  Masheyシェルは26個のシェル変数(名前が何であるかを推測)をサポートしました。変数pは検索パス(「コマンド実行のシェルディレクトリ検索シーケンス」)で、ディレクトリはコロンで区切られていました。………………………………………………………………おもしろい事実:Masheyシェルが.profileファイルを処理している間に、fileという初期$p値を指定することもできます.path
G-Manが「Reinstate Monica」と言う

回答:


3

掘り下げた後、本当の答えはありませんが、少なくともいくつかの歴史的事実に支えられたこの会話に追加する新しい情報があります。

Peter Chubb はシェルについて話しているスピーチの1つにhttps://www.youtube.com/watch?v=Sye3mu-EoTIがあります。19 00頃eに、デフォルトエディターのエイリアスである理由を述べているのを聞くことができます。 UNIXシェルでは、古い端末が快適でなく、使いやすく、それらを入力するのが不快な体験だったためです。

彼は正確なモデル、この場合はhttps://en.wikipedia.org/wiki/Teletype_Model_33に言及しています

いくつかの調査(http://www.pdp8.net/asr33/asr33.shtml)の後、このマシンでは64文字のプールのみを選択でき、US ASCIIを完全にサポートしているわけではなく、2〜6文字、6ビットの組み合わせです。

実際、このマシンはASCIIとはまったく関係がありません。つまり、ASCIIの最初の64文字だけをサポートしているわけではありません。まったく関係のない入力セットであり、おそらく(現代では)標準の文字セットではありません。

ASR 33テレタイプは、大文字、数字、記号のみを許可する64文字を印刷できます。

http://www.pdp8.net/asr33/asr33.shtmlから

そしてこれは、大文字をサポートするために実際に6ビット以上が必要であり、大文字が64文字のマークを超えているという事実を考えると、US ASCIIではないことを証明しています(テーブルに従う場合は10進数で63

    0 NUL    16 DLE    32      48 0    64 @    80 P    96 `   112 p 
    1 SOH    17 DC1    33 !    49 1    65 A    81 Q    97 a   113 q 
    2 STX    18 DC2    34 "    50 2    66 B    82 R    98 b   114 r 
    3 ETX    19 DC3    35 #    51 3    67 C    83 S    99 c   115 s 
    4 EOT    20 DC4    36 $    52 4    68 D    84 T   100 d   116 t 
    5 ENQ    21 NAK    37 %    53 5    69 E    85 U   101 e   117 u 
    6 ACK    22 SYN    38 &    54 6    70 F    86 V   102 f   118 v 
    7 BEL    23 ETB    39 '    55 7    71 G    87 W   103 g   119 w 
    8 BS     24 CAN    40 (    56 8    72 H    88 X   104 h   120 x 
    9 HT     25 EM     41 )    57 9    73 I    89 Y   105 i   121 y 
   10 LF     26 SUB    42 *    58 :    74 J    90 Z   106 j   122 z 
   11 VT     27 ESC    43 +    59 ;    75 K    91 [   107 k   123 { 
   12 FF     28 FS     44 ,    60 <    76 L    92 \   108 l   124 | 
   13 CR     29 GS     45 -    61 =    77 M    93 ]   109 m   125 } 
   14 SO     30 RS     46 .    62 >    78 N    94 ^   110 n   126 ~ 
   15 SI     31 US     47 /    63 ?    79 O    95 _   111 o   127 DEL 

これで、コード化されたテーブルでそれらをサポートする実際の標準なしに、この文字から64文字を取得することがわかりました。

このウェブサイトのおかげでhttp://keyboards.jargon-file.org/#ASR33そのようなキーボードの入力レイアウトを表示できます

ここに画像の説明を入力してください

そしてSHIFTを押すと

ここに画像の説明を入力してください

また、文字を生成する物理的な接続がどのようにコード化されているかについてもう少し情報がありますhttp://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html(ページは、ASR33およびASCII文字はビットレベルまで異なります)。

私はそれが全く存在しないことに注意することは興味深いことだと思う{}だけ()、おそらく作成サブシェルはOKが、新しいプロセスを作成したことを意味し、おそらくないので、簡単でしたか、端末によって許可が。

結局、私は本当の科学的な答えがあるとは思わない。それはおそらく特別な意味を待っている「自由な」キャラクターだった。1つはshure thoです:シェルと端末はASCIIよりも古く、今日知っているASCIIまたはコード化されたテーブルについて考えることはおそらく謎を解決することはないでしょう。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.