경로 구분자로 콜론을 선택한 이유

경로 구분자로 콜론을 선택한 이유

:경로 구분자로 콜론( )을 선택하는 이유는 무엇입니까 ?

"디렉토리 구분 기호"가 아니라 "경로 구분 기호"를 의미합니다. 경로 구분 기호는 환경 변수의 항목 사이에 배치되는 기호입니다 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쉘에 대한 그의 강의 중 하나인 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 키보드 레이아웃(두 번째 레이어)

게다가추가 정보결과 문자의 물리적 연결이 인코딩되는 방법과 관련하여(이 페이지에는 ASR33 및 ASCII 문자가 비트 수준에서 다르다는 점도 명시되어 있습니다).

{no 또는 }only 가 있다는 것이 흥미롭다고 생각합니다 (. )이는 하위 쉘을 생성하는 것은 괜찮을 수 있지만 새 프로세스를 생성하는 것은 터미널에서 쉽지 않거나 허용되지 않을 수 있음을 의미합니다.

결국 진짜는 없는 것 같아과학적대답은 아마도 특별한 의미를 기다리는 "자유" 단어일 것입니다. 그러나 한 가지는 확실합니다. 쉘과 터미널은 ASCII보다 오래되었으며 오늘날 우리가 알고 있는 ASCII 또는 인코딩 테이블을 고려하면 아마도 미스터리가 해결되지 않을 것입니다.

관련 정보