Vai al contenuto
Offerte

Windows e Linux, perché i percorsi usano C: e / da 40 anni

In questo articolo Indice dei contenuti 3 sezioni

Chi passa da Windows a Linux si accorge subito di una stranezza: i percorsi scritti come C:UsersNomeDocuments da una parte e /home/nome/documenti dall’altra. Sembra una differenza estetica, invece dietro il backslash e la lettera di unità c’è quasi mezzo secolo di storia informatica, fatta di floppy disk, compromessi commerciali e decisioni prese all’ultimo minuto. Windows conserva ancora due elementi ereditati direttamente dal DOS, cioè la lettera dell’unità come C: e la barra rovesciata come separatore tra le cartelle. Linux e gli altri sistemi che seguono il modello Unix hanno invece un unico albero che parte dalla radice /, senza bisogno di assegnare una lettera a ogni disco. La cosa curiosa è che questa divergenza non nasce da una scelta fatta quando Windows era già Windows. Bisogna tornare ai primi anni Ottanta, quando il DOS non aveva ancora nemmeno il concetto di directory così come lo conosciamo oggi.

Prima di C: c’erano A: e B:

Le lettere delle unità sono più vecchie sia di Windows sia dell’hard disk sui PC IBM. I primi sistemi DOS lavoravano soprattutto con i floppy disk, quindi il primo lettore era A: e l’eventuale secondo B:, una convenzione presa in prestito dall’ambiente CP/M. Su macchine con uno o due lettori di dischetti e nessun disco fisso aveva perfettamente senso. La prima versione di DOS distribuita con IBM PC nel 1981 aveva una struttura del file system sostanzialmente piatta. C’era la directory principale del disco, ma l’utente non poteva costruire alberi di cartelle e sottocartelle. Scrivere qualcosa come A:LETTERA.TXT bastava a indicare sia il supporto sia il file da aprire. Quando i dischi fissi cominciarono a diventare comuni, le prime due lettere erano ormai occupate per abitudine dai floppy. Al disco rigido toccò quindi la C:, ed è da lì che arriva una convenzione sopravvissuta per oltre quarant’anni.

Il 1983 e quel compromesso chiesto da IBM

La svolta arriva con MS-DOS 2.0, pensato per accompagnare IBM PC XT e il suo disco fisso. IBM voleva soprattutto un sistema capace di gestire il nuovo hard disk senza far esplodere il consumo di memoria, mentre Paul Allen e alcuni sviluppatori Microsoft colsero l’occasione per rimettere mano a parti importanti del sistema. La modifica più visibile riguardava proprio il file system. La struttura pensata per i floppy non reggeva più su dischi da diversi megabyte, dove accumulare migliaia di file tutti allo stesso livello diventava insostenibile. Nacque così la gerarchia con directory principale e sottodirectory, chiaramente ispirata a Unix e a XENIX, la versione commerciale di Unix sviluppata da Microsoft. Da lì arrivarono anche i file handle, la redirezione dell’I/O, i driver caricabili e utilità come find, more e sort.

Il codice sorgente originale di MS-DOS 1.25 e 2.0, pubblicato da Microsoft su GitHub, contiene addirittura file chiamati XENIX.ASM e XENIX2.ASM. E il file README documenta una modifica dell’ultimo minuto per la compatibilità: l’uso di al posto di / come separatore dei percorsi. Il motivo è semplice, lo slash serviva già per gli switch dei comandi, come in dir /w, format /q o xcopy /s, una convenzione ereditata dai sistemi DEC. Su richiesta di IBM, Microsoft ripiegò sul backslash.

C: non è la radice, e infatti Windows fa anche altro

Un dettaglio spesso trascurato è che C: non equivale concettualmente alla / di Linux. È la radice del volume associato alla lettera C, e Windows può avere C:, D:, E: ciascuno con la propria radice. Linux presenta invece un unico albero, dove un secondo disco viene montato in un punto qualsiasi come /mnt/dati e diventa semplicemente un ramo dello stesso insieme. Anche Windows sa fare qualcosa di simile ai mount point. NTFS permette di montare un volume dentro una cartella di un altro volume, per esempio C:DatiArchivio, senza assegnargli una lettera. Internamente i volumi sono identificati da nomi come \?Volume{GUID}, e con il comando mountvol C: /L si ottiene proprio il GUID dell’unità C.

Molte API e diversi programmi accettano anche la forma C:/Users/Mario/Documents, perché vari livelli software convertono lo slash in backslash durante la normalizzazione. PowerShell è molto più tollerante del vecchio cmd.exe e digerisce senza problemi Get-ChildItem C:/Windows/System32, oltre a usare la stessa sintassi per cose che filesystem non sono, come HKLM:SoftwareMicrosoft nel Registro di sistema. Il doppio backslash, infine, cambia le carte in tavola. I percorsi UNC come \SERVERCondivisioneCartellaFile.txt puntano a una risorsa condivisa in rete, dove SERVER è il computer o il NAS remoto e Condivisione il nome della risorsa pubblicata. Windows può poi associare a quella condivisione una lettera come Z:, ma resta solo un modo alternativo di raggiungere la stessa cosa.

Condividi:
142 Condivisioni