:
パス区切り文字としてコロン()を選択するのはなぜですか?
「ディレクトリ区切り記号」ではなく、「パス区切り記号」を意味します。パス区切り記号は、環境変数の項目間に配置される記号です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文字を取得することがわかりましたが、エンコードテーブルでこれをサポートする実際の標準はなく、小文字もなく、大文字のプラス記号と数字しかありません。
ありがとうこのウェブサイトこのキーボードの入力レイアウトを表示できます
SHIFT キーを押しても次のようになります。
しかも追加情報結果の文字の物理的な接続がどのようにエンコードされるかについて(このページには、ASR33およびASCII文字がビットレベルで異なることも記載されています)。
{
noまたは}
onlyがあることが興味深いと思います(
。)
これは、サブシェルを作成するのは大丈夫かもしれませんが、新しいプロセスを作成することは端末で容易ではないか、受け入れられないかもしれません。
結局本当はないと思います。科学的答えはおそらく特別な意味を待つ「自由」という言葉です。しかし、一つは確かです。シェルとターミナルはASCIIより古く、今日私たちが知っているASCIIまたはエンコーディングテーブルを考えると、おそらく謎は解決しないでしょう。