パス区切り文字でコロンを選択した理由

パス区切り文字でコロンを選択した理由

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

「ディレクトリ区切り記号」ではなく、「パス区切り記号」を意味します。パス区切り記号は、環境変数の項目間に配置される記号ですPATH

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

コンピュータとソフトウェアのすべては、かつて誰かがどこから来たかの思いやりのある決定でした。例えば、チルダがホームディレクトリを表す理由(そしてhjklがviの矢印キーを表す理由)。今回の決定の背景を知りたいです。


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

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

POSIXでは:

<colon>PATHで使用できるディレクトリ名はこのコンテキストでは区切り文字であるため、文字を含めることはできません<colon>

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

コロンを脱出することは不可能に見えます。 Stack Overflowの@Random832はPATH処理のためのソースコードを調べましたが、エスケープメカニズムが見つかりませんでした。

https://stackoverflow.com/questions/14661373/how-to-escape-colon-in-path-on-unix

ベストアンサー1

いくつかの調査の後、実際の回答は得られませんでしたが、少なくともいくつかの歴史的事実を裏付けるこの会話に追加する新しい情報があります。

私はピーターチャーブですeシェルに関する彼の講義の1つである19時頃に、彼がUNIXシェルにネイティブエディタのエイリアスがある理由について言及していることを聞くことができます。古い端末はあまり快適でも使いやすくもなく、タイピングするのも不快な経験だったからです。

彼は正確なモデルに言及した。テレタイププライターモデル33この場合。

後ろにいくつかの研究私はこのマシンが64個の文字プールしか選択できず、6ビットの組み合わせである2の6乗文字であるUS ASCIIを完全にサポートしていないことがわかりました。

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

ASR 33テレタイプは64文字を印刷でき、大文字、数字、および記号のみが許可されます。源泉

これは、大文字をサポートするには実際には6ビット以上が必要であり、大文字が64文字の表示(または表に従うには10進値63)を超えるため、確かにUS ASCIIではないことを証明します。

 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文字を取得することがわかりましたが、エンコードテーブルでこれをサポートする実際の標準はなく、小文字もなく、大文字のプラス記号と数字しかありません。

ありがとうこのウェブサイトこのキーボードの入力レイアウトを表示できます

ASR33キーボードレイアウト

SHIFT キーを押しても次のようになります。

ASR33キーボードレイアウト(2層目)

しかも追加情報結果の文字の物理的な接続がどのようにエンコードされるかについて(このページには、ASR33およびASCII文字がビットレベルで異なることも記載されています)。

{noまたは}onlyがあることが興味深いと思います()これは、サブシェルを作成するのは大丈夫かもしれませんが、新しいプロセスを作成することは端末で容易ではないか、受け入れられないかもしれません。

結局本当はないと思います。科学的答えはおそらく特別な意味を待つ「自由」という言葉です。しかし、一つは確かです。シェルとターミナルはASCIIより古く、今日私たちが知っているASCIIまたはエンコーディングテーブルを考えると、おそらく謎は解決しないでしょう。

おすすめ記事