¿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 PATH
variable 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.
/etc/passwd
(que también contiene rutas en las columnas de inicio y shell).%
especialmente en$PATH
.PATH
antes 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)p
era 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.profile
archivo, también le permitió especificar un$p
valor inicial en el archivo llamado.path
.Respuestas:
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é
e
es 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) .
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)
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
y presionando SHIFT también obtienes
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.
fuente
:
letrero y el shell stackoverflow.com/questions/3224878/…