Por qué las rutas de archivo en MS-DOS y Windows usan el carácter "\" y no el "/" (como querían los desarrolladores de Microsoft)

Por qué las rutas de archivo en MS-DOS y Windows usan el carácter "\" y no el "/" (como querían los desarrolladores de Microsoft)
41 comentarios

Si habéis usado el intérprete de comandos de Windows o peináis canas y usásteis MS-DOS seguro que tenéis claro que al escribir una ruta en DOS se usaban las barras invertidas o "\". Un ejemplo sería "C:\Users\JaviPas\Downloads\xataka.png".

Lo curioso es que Microsoft eligiera ese carácter para ir indicando la ruta hacia el fichero. Teniendo en cuenta que los propios desarrolladores de Microsoft querían usar la barra normal ("/") que se usaba en los sistemas UNIX, ¿por qué eligieron la invertida?

La barra normal ya estaba cogida, pero Microsoft acabó aceptando ambas

La historia de esa decisión la contaba Larry Osterman en los blogs de MSDN en 2005. El post original se perdió, pero es posible recuperarlo a través de Internet Archive y su (maravillosa) Wayback Machine.

Como explicaba allí, todo empezó con DOS 1.0, la primera versión del sistema operativo que Microsoft preparó para IBM. En aquel momento solo se daba soporte a discos flexibles, y curiosamente muchas de las utilidades incluidas con DOS habían sido desarrolladas por IBM, que usaba el carácter "/" como "interruptor" o "modificador" de comando.

Así, si alguien quería añadir un parámetro a un comando como DIR, lo hacía con esa barra normal. Para obtener la ayuda de un comando, por ejemplo, uno escribía (y sigue escribiendo) "DIR /?". Ese mismo modificador se usaba también en otros sistemas operativos de la época como los DEC.

En los sistemas UNIX el modificador no era la barra, sino el guión ("por ejemplo, "ls -la"), pero cuando IBM diseñó el funcionamiento de sus comandos no tuvo en cuenta el formato usado por esos sistemas UNIX.

El problema llegó cuando hubo que soportar directorios, algo que ni siquiera estaba contemplado en DOS 1.0. Con su segunda versión, DOS 2.0, ocurrió que el desarrollo tenía que alinearse con el PC/XT de IBM, que contaba con un disco duro de 10 MB.

Eso planteaba una oportunidad para los desarrolladores de Microsoft, que tenían la oportunidad de añadir soporte para APIs de sistemas de ficheros modernos y también soporte para rutas jerárquicas.

Ahí fue cuando se encontraron con el problema, porque muchos de los desarrolladores de DOS usaban máquinas Xenix (el UNIX de Microsoft) para su trabajo y para la gestión del correo electrónico.

Estaban por tanto muy acostumbrados a utilizar la barra normal para esas rutas jerárquicas que sí estaban soportadas en sistemas UNIX desde hacía años, así que intentaron aplicarlas a DOS 2.0 a través de la barra normal ("/"), pero no pudieron.

¿Por qué? Pues porque esa barra normal ya estaba cogida y se usaba como el citado modificador. Se pensó en usar el punto (".") que por ejemplo se usaba en sistemas DEC, pero ese carácter se usaba para separar nombres de fichero de sus extensiones. Así pues, acabaron eligiendo la barra invertida ("\") que después de todo era parecida a la barra normal.

Así fue como ese carácter se convirtió en el utilizado por esa versión de DOS y después se aplicaría al resto de versiones, llegando también a heredarse en todas las versiones de Windows, incluida la versión actual, Windows 10.

Cmd1

Aún así, en Microsoft los desarrolladores hicieron trampa, porque aunque la notación oficial hace uso de la barra invertida, permitieron que se usase la notación UNIX con la barra normal para indicar rutas de fichero. Podéis probarlo en una consola de comandos o en el propio explorador de archivos: da igual que escribáis "C:\Users\JaviPas\Downloads\xataka.png" o "C:/Users/JaviPas/Downloads/xataka.png", y el sistema operativo convierte las barras normales a invertidas. 

De hecho, apuntaba finalmente Osterman, también llegó a ser posible usar el modificador de Unix en el intérprete de comandos de Windows: si añadíamos la opción "SWITCHAR=" podíamos establecer si queremos elegir el carácter oficial ("/") o el modificador de Unix ("-"). 

Temas
Inicio