Чому "umount" не пишеться "unmount"?


64

Мені цікаво, чи є якась історична чи практична причина, чому umountкомандування - ні unmount.

Відповіді:


79

Це відноситься до самого першого видання Unix , де всі стандартні імена файлів були довжиною не більше 6 символів (думаю passwd), хоча ця версія підтримувала коклюш із 8 символів у назві файлу . Більшість команд мали пов'язаний вихідний файл із закінченням .c(наприклад umount.c), який залишив лише 6 символів для базового імені.

6-символьне обмеження могло також бути переходом від попередньої версії розробки або успадковано від тодішньої системи IBM, яка мала 6-символьне обмеження. (Реалізації ранніх C мали межа 6-символьні ідентифікатори - довші ідентифікатори були прийняті , але компілятор тільки дивився на перші 6 символів, foobar1і foobar2. Був тими ж змінним)

(Я думав, що запам’ятав umountсторінку людини, в якій написано правопис як помилку невідомого походження, але я зараз не можу її знайти.)


21
Ім'я команди 6 символів + .c(або .s) розширення = обмеження назви файлів 8 символів.
geekosaur

@geekosaur: Ага, правильно, вихідний файл. Якщо ви напишете відповідь, я видалю свою.
Жиль

5
Ех, просто анотувати це, якщо хочеш.
geekosaur

@geekosaur: Я також подумав про довідкову сторінку, але V1 не мав команди man (і називається одна зі сторінок man directory, яка ще не підходила б). Тож мені цікаво, чому він passwdбув усічений до 6 символів (ще не було passwdкоманди, просто /etc/passwd).
Жиль

2
Можливо, саме через грецький суфікс οὐ, що означає «ні», це також пояснило бurandom
Ентоні Гарсія

8

Здається, тут деякий час сиділа помилкова інформація.

Найбільш ймовірна причина umountкоманди , що має скорочену назву, тому що це випливає з назви системного виклику , який він використовує: umount().

Ймовірною причиною того, що системний виклик "unmount", що має ім'я, umount()полягає в тому, що ранні лінкери обмежували довжину зовнішніх ідентифікаторів до 6 символів (лише в одному випадку) для деяких типів систем (і має сенс підтримувати сумісність з такими інструментами на той час), а "umount" - це логічна форма абревіатури для "unmount". Див. Сторінку 179 першого видання «Мова програмування C» для переліку зовнішніх характеристик ідентифікаторів різних систем, що цікавлять на момент публікації.

Зауважимо також, що перші компілятори C розглядали перші 8 символів ідентифікатора як значущі, але дозволяли ідентифікаторам бути довшими. (K&R, сторінка 33)

Зауважте, що довжина ідентифікаторів у таблицях символів не має нічого спільного з довжиною імені файлу, принаймні, не в межах Unix (таблиці символів Unix, оскільки V1 мають 8 символів для ідентифікаторів, хоча в посібнику V1 зазначено, що асемблер " генерує символи не більше 7 байт " ).


-1

З тієї ж причини creatсистемний виклик не написано create?

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


4
Ні. Шкода в цитаті, на яку ви посилаєтесь, полягає в тому, що вони могли додати "е" навіть незважаючи на обмеження 6 символів, про які йдеться в іншій відповіді. Насправді немає вагомих причин для того, щоб він був усічений, на відміну від умату.
Warren Young

Я здогадуюсь, що до цього часу традицією було врізати букви, якщо можна.
Шадур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.