Perché 'umount' non è scritto 'smonta'?


64

Mi chiedo se c'è qualche motivo storico o pratico per cui il umountcomando non lo sia unmount.

Risposte:


79

Questo risale alla primissima edizione di Unix , dove tutti i nomi di file standard erano lunghi al massimo 6 caratteri (pensa passwd), anche se questa versione supportava un enorme 8 caratteri in un nome di file . Alla maggior parte dei comandi era associato un file di origine che termina con .c(ad esempio umount.c), che ha lasciato solo 6 caratteri per il nome di base.

Una limitazione di 6 caratteri potrebbe anche essere stata una sospensione da una versione di sviluppo precedente o ereditata da un sistema IBM di allora in vigore che aveva una limitazione di 6 caratteri. (Early C implementazioni avevano un limite di 6 caratteri su identificatori - identificatori più lunghi sono stati accettati, ma il compilatore guardato solo i primi 6 caratteri, quindi foobar1e foobar2. Erano la stessa variabile)

(Pensavo di ricordare una umountpagina man che elencava l'ortografia come un bug di origine sconosciuta, ma non riesco a trovarlo ora.)


21
Nome comando a 6 caratteri + .c(o .s) estensione = limite di nome file a 8 caratteri.
geekosaur,

@geekosaur: Ah, giusto, il file sorgente. Se scrivi una risposta, eliminerò la mia.
Gilles 'SO- smetti di essere malvagio' il

5
Enh, basta annotarlo se vuoi.
geekosaur,

@geekosaur: Ho pensato anche alla pagina man, ma V1 non aveva un comando man (e una delle pagine man è chiamata directory, che non si sarebbe ancora adattata). Quindi mi chiedo perché sia passwdstato troncato a 6 caratteri (non c'era nemmeno un passwdcomando, solo /etc/passwd).
Gilles 'SO-smetti di essere malvagio' il

2
Forse è a causa del "suffisso" greco, che significa "non", che spiegherebbe ancheurandom
Anthony Garcia,

8

Sembra che ci siano state alcune informazioni errate qui da un po 'di tempo.

La ragione più probabile per il umountcomando di avere il nome abbreviato è perché segue dal nome della chiamata di sistema che utilizza: umount().

Il probabile motivo per cui la chiamata di sistema "smonta" con il nome umount()è perché i linker iniziali limitavano la lunghezza degli identificatori esterni a un minimo di 6 caratteri (di un solo caso) su alcuni tipi di sistemi (ed era logico mantenere la compatibilità con tali strumenti al momento) e "umount" è una forma logica di abbreviazione di "smontare". Vedi pagina 179 della prima edizione di The C Programming Language per un elenco delle caratteristiche identificative esterne di vari sistemi di interesse al momento della pubblicazione.

Si noti inoltre che i primi compilatori C consideravano i primi 8 caratteri di un identificatore come significativi, ma consentivano agli identificatori di essere più lunghi. (K&R pagina 33)

Nota che la lunghezza degli identificatori nelle tabelle dei simboli non ha nulla a che fare direttamente con la lunghezza del nome file, almeno non all'interno di Unix (le tabelle dei simboli Unix, dal momento che V1, hanno 8 caratteri per gli identificatori, sebbene nel manuale V1 si noti che l'assemblatore " genera simboli di massimo 7 byte " ).


-1

Per lo stesso motivo la creatchiamata di sistema non è stata scritta create?

https://stackoverflow.com/questions/1713457/what-did-ken-thompson-mean-when-he-said-id-spell-create-with-an-e


4
No. Il rimpianto nella citazione che fai riferimento è perché avrebbero potuto aggiungere la 'e' anche nonostante il limite di 6 caratteri che fosse discusso nell'altra risposta. Non c'è davvero alcuna buona ragione per troncare, a differenza di umount.
Warren Young,

Immagino a quel punto che fosse tradizione troncare le lettere se potevi.
Shadur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.