Відповіді:
Це відноситься до самого першого видання Unix , де всі стандартні імена файлів були довжиною не більше 6 символів (думаю passwd
), хоча ця версія підтримувала коклюш із 8 символів у назві файлу . Більшість команд мали пов'язаний вихідний файл із закінченням .c
(наприклад umount.c
), який залишив лише 6 символів для базового імені.
6-символьне обмеження могло також бути переходом від попередньої версії розробки або успадковано від тодішньої системи IBM, яка мала 6-символьне обмеження. (Реалізації ранніх C мали межа 6-символьні ідентифікатори - довші ідентифікатори були прийняті , але компілятор тільки дивився на перші 6 символів, foobar1
і foobar2
. Був тими ж змінним)
(Я думав, що запам’ятав umount
сторінку людини, в якій написано правопис як помилку невідомого походження, але я зараз не можу її знайти.)
directory
, яка ще не підходила б). Тож мені цікаво, чому він passwd
був усічений до 6 символів (ще не було passwd
команди, просто /etc/passwd
).
urandom
Здається, тут деякий час сиділа помилкова інформація.
Найбільш ймовірна причина umount
команди , що має скорочену назву, тому що це випливає з назви системного виклику , який він використовує: umount()
.
Ймовірною причиною того, що системний виклик "unmount", що має ім'я, umount()
полягає в тому, що ранні лінкери обмежували довжину зовнішніх ідентифікаторів до 6 символів (лише в одному випадку) для деяких типів систем (і має сенс підтримувати сумісність з такими інструментами на той час), а "umount" - це логічна форма абревіатури для "unmount". Див. Сторінку 179 першого видання «Мова програмування C» для переліку зовнішніх характеристик ідентифікаторів різних систем, що цікавлять на момент публікації.
Зауважимо також, що перші компілятори C розглядали перші 8 символів ідентифікатора як значущі, але дозволяли ідентифікаторам бути довшими. (K&R, сторінка 33)
Зауважте, що довжина ідентифікаторів у таблицях символів не має нічого спільного з довжиною імені файлу, принаймні, не в межах Unix (таблиці символів Unix, оскільки V1 мають 8 символів для ідентифікаторів, хоча в посібнику V1 зазначено, що асемблер " генерує символи не більше 7 байт " ).
З тієї ж причини creat
системний виклик не написано create
?
.c
(або.s
) розширення = обмеження назви файлів 8 символів.