¿Por qué se eligió el colon como separador de ruta?

22

¿Por qué se :eligió colon ( ) como separador de ruta?

Tenga en cuenta que quiero decir "separador de ruta" y no "separador de directorio". El separador de ruta es el símbolo colocado entre las entradas en la PATHvariable de entorno.

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

Todo en computadoras y software alguna vez fue una decisión deliberada tomada por alguien en algún lugar. Por ejemplo, por qué tilde representa el directorio de inicio (y por qué hjkl para las teclas de dirección en vi) . Me gusta saber los antecedentes de esta decisión.


Algunos hechos al azar:

Tener dos puntos como separador de ruta significa que el directorio con dos puntos en el nombre no se puede agregar a la ruta.

de POSIX:

Dado que <colon>es un separador en este contexto, los nombres de directorio que podrían usarse en PATH no deberían incluir un <colon>carácter.

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

Parece que no es posible escapar del colon. @ Random832 de Stack Overflow inspeccionó el código fuente que maneja la RUTA y no encontró ningún mecanismo de escape.

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

lesmana
fuente
Ese también es el separador para /etc/passwd(que también contiene rutas en las columnas de inicio y shell).
Stéphane Chazelas
11
Ayer pasé media hora investigando esta pregunta. Leí el Manual del programador de Unix de 1971 que especifica el uso de dos puntos, pero no la razón por la que se eligió dos puntos sobre (p. Ej.) El símbolo de tubería. También leí todo lo que pude sobre Multics pero, aparentemente, solo tenía un directorio en su RUTA (por lo que no es necesario un separador). Dudo que obtengamos una buena respuesta aquí, pero si existe la posibilidad de que algún usuario veterano de Unix pueda responder esta pregunta, me gustaría que tengan la oportunidad, así que votaré para volver a abrir.
Anthony G - justicia para Mónica
3
Es posible que no se haya llamado una variable de shell / entorno PATHantes de la introducción de Unix Versión 7 (en 1979) , pero había una :ruta de búsqueda delimitada ya en 1977.  PWB / Unix (Programmer's Workbench) usó el shell Mashey , escrito por John R. Mashey , que cayó cronológicamente entre la concha de Thompson y la concha de Bourne. ... (Continúa)
G-Man dice 'Restablecer a Monica' el
3
(Cont.) ...  El shell Mashey admitía 26 variables de shell (adivina cuáles eran sus nombres), y la variable pera la ruta de búsqueda (llamada "la secuencia de búsqueda de directorio de Shell para la ejecución de comandos"), con directorios separados por dos puntos. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Dato curioso: mientras el shell Mashey procesó el .profilearchivo, también le permitió especificar un $pvalor inicial en el archivo llamado .path.
G-Man dice 'reinstalar a Monica' el

Respuestas:

3

Después de investigar un poco, no tengo una respuesta real, pero al menos nueva información para agregar a esta conversación respaldada por algunos hechos históricos.

Aquí está Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI en uno de sus discursos hablando sobre el caparazón, alrededor de la marca de las 19:00 puede escucharlo mencionar por qué ees el alias del editor predeterminado en shells de Unix, es porque las terminales más antiguas donde no eran tan cómodas o fáciles de usar y escribir en ellas fue una experiencia desagradable.

Está mencionando un modelo preciso, el https://en.wikipedia.org/wiki/Teletype_Model_33 en este caso.

Después de un poco de investigación ( http://www.pdp8.net/asr33/asr33.shtml ), encuentro que esta máquina solo le permite elegir un grupo de 64 caracteres, ni siquiera soporte completo de ASCII de EE. UU., 2 a la potencia de 6 caracteres , es una combinación de 6 bits.

De hecho, esta máquina no tiene nada que ver con ASCII, lo que significa que ni siquiera es compatible con los primeros 64 caracteres de un ASCII, solo busca un conjunto de entradas totalmente no relacionado y probablemente un conjunto de caracteres no estándar (para nuestra era moderna) .

El teletipo ASR 33 puede imprimir 64 caracteres, lo que solo permite LETRAS MAYÚSCULAS, números y símbolos.

de http://www.pdp8.net/asr33/asr33.shtml

y esto solo prueba que definitivamente no es ASCII de EE. UU. dado que para admitir letras mayúsculas realmente necesita más de 6 bits, las letras mayúsculas están más allá de la marca de 64 caracteres (o el valor 63 en decimal si desea seguir una tabla)

    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 

Ahora sabemos que obtenemos 64 caracteres de esta cosa, sin ningún estándar real para admitirlos en la tabla codificada y tampoco tenemos letras minúsculas, solo mayúsculas más símbolos y números.

Gracias a este sitio web http://keyboards.jargon-file.org/#ASR33 puedo mostrarle el diseño de entrada de dicho teclado

ingrese la descripción de la imagen aquí

y presionando SHIFT también obtienes

ingrese la descripción de la imagen aquí

También hay un poco más de información sobre cómo se codifican las conexiones físicas que generan los caracteres http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (la página también aclara que ASR33 y los caracteres ASCII son diferentes hasta el nivel de bits).

Creo que es interesante notar que no hay {o }solo, (y lo )que significa que probablemente la creación de subcapas estuvo bien, pero la creación de nuevos procesos probablemente no fue tan fácil o permitida por el terminal.

Al final, no creo que haya una respuesta científica real , probablemente fue un personaje "libre" que esperaba un significado especial; Una cosa es segura: los shells y terminales son más antiguos que ASCII y pensar en ASCII o en cualquier tabla codificada tal como la conocemos hoy probablemente no resolverá el misterio.

usuario31223
fuente
más sobre el :letrero y el shell stackoverflow.com/questions/3224878/…
user31223