Microhistorias: ¿Por qué se utilizó "\" para indicar una ruta en DOS? y otros secretos de los caracteres "\" y "/"

CDos-CDosRun-RunDosRun

Foto (C) FOX

Bueno no solo en DOS, también hoy en todos los sistemas Windows, cuando abres una línea de comandos, este es el caracter "\" (barra invertida) usado para delimitar la ruta hacia un archivo o carpeta del sistema.

Pues todo empieza con la relación tan íntima que tuvieron al principio Microsoft e IBM. Muchas de las utilidades DOS fueron escritas por IBM y ellos usaban el caracter "/" como delimitador (switch) para introducir los parámetros de dichos comandos. En *NIX dicho caracter es el guión "-" pero en los sistemas DEC (incluyendo VMS, DECSystem-20 y DECSystem10), se usaba "/".

Luego llegó DOS 2.0, el cual estaba totalmente atado al PC/XT y la mayor característica que nos ofrecía eran sus magníficos 10MB de disco duro. Entonces a partir de ahora Microsoft tendría que dar soporte para poder recorrer rutas más complejas (tipo árbol) con cierta profundidad. Entonces añadieron sus nuevas API's para poder manejar directorios y recorrer dichas rutas (paths).

Históricamente han habido varios mecanismos para poder manejar dichas rutas jerárquicas. Por ejemplo, DecSystem-20:

<volume>:"<"<Directory>[.<Subdirectory>">"FileName.Extension[,Version]

sería por ejemplo el fichero "MONITR.EXE":

PS:<SYSTEM>MONITR.EXE,4

El sistema VMS era similar pero en vez de usar "<" ">" usaba "[" "]" (y con un ";" separaba las versiones). También tenemos que recordar que los sistemas *NIX ya usaban también "/" para las rutas.

Para MS-DOS 2.0 los programadores decidieron crear una versión híbrida (ya tenían soporte para letras de unidades y querían seguir usándolas). Entonces decidieron adoptar el sistema adoptado por *NIX el cual, como ya hemos mencionado antes, usaba el "/" para indicar las rutas.

Pero entonces apareció un problema, no podían utilizar "/" ya que este se usaba para los parámetros de los comandos.

¿Qué hicieron entonces?, podrían haber optado por el "." pero ya se estaba usando para indicar la extensión de los ficheros. Por lo tanto el caracter más parecido al "/" era nada más y nada menos que "\" (también llamado barra invertida).

Resumiendo, se usó "\" porque "/" ya estaba ocupada :)

Pero no acaba aquí la historia.

Hay un pequeño secreto sobre el MS-DOS y el uso de estos caracteres. Los programadores estaban muy familiarizados con sistemas Xenix y para ellos era muy familiar usar la semántica de los comandos *NIX. Por lo tanto hicieron que cualquiera de los dos caracteres pudiera funcionar, tanto "/" como "\". Puedes probarlo tu mismo abriendo cualquier fichero usando tanto una barra como la otra:

notepad C:/Windows/win.ini
notepad C:\Windows\win.ini

Los dos funcionan igual, ya sabes el motivo.

Pero aún hay más. No contentos con usar ambos caracteres también implementaron una llamada al sistema (system call) no documentada para poder cambiar el caracter de "switch" (para los parámetros de los comandos) por el que quieras. Si añades en el CONFIG.SYS una llamada "SWITCHAR=" puedes indicarle cualquier caracter que quieras para delimitar los parámetros.

Pues nada, seguro que no podías dormir preguntándote el motivo del uso del "\" en los sistemas Windows ;), pues ya tienes la respuesta.

Nunca viene mal repasar un poco de MicroHistoria :)

Post original de Larry Osterman de MSDN.

Visto en HackerNews.