Ответы:
Это относится ко времени самого первого издания 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 символов.