Почему двоеточие ( :
) было выбрано в качестве разделителя пути?
Обратите внимание, что я имею в виду «разделитель пути», а не «разделитель каталогов». Разделитель пути - это символ, помещенный между записями в PATH
переменной среды.
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
^ this symbol
Все в компьютерах и программном обеспечении когда-то было кем-то осознанным решением. Например, почему тильда представляет домашний каталог (и почему hjkl для клавиш направления в vi) . Мне нравится знать предысторию этого решения.
Несколько случайных фактов:
Наличие двоеточия в качестве разделителя пути означает, что каталог с двоеточием в имени не может быть добавлен в путь.
из POSIX:
Поскольку
<colon>
в этом контексте является разделителем, имена каталогов, которые могут использоваться в PATH, не должны содержать<colon>
символ.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
Кажется, что невозможно избежать толстой кишки. @ Random832 из Stack Overflow проверил исходный код, обрабатывающий PATH, и не обнаружил механизма выхода.
/etc/passwd
(который также содержит пути в столбцах home и shell).%
особенно в$PATH
.PATH
до введения Unix версии 7 (в 1979 году) , но был:
-delimited путь поиска еще в 1977. PWB / Unix (программист Workbench) используется в Mashey оболочке , написанной Джон Р. Машей , который хронологически попал между оболочкой Томпсона и оболочкой Борна. … (Продолжение)p
представляет собой путь поиска (называемый «последовательность поиска в каталоге Shell для выполнения команды»), с каталогами, разделенными двоеточиями. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Интересный факт: в то время, как оболочка Mashey обрабатывает.profile
файл, она также позволяет вам указать начальное$p
значение в файле с именем.path
.Ответы:
После некоторых раскопок у меня нет реального ответа, но есть, по крайней мере, новая информация для добавления в этот разговор, подкрепленная некоторыми историческими фактами.
Вот Питер Чубб https://www.youtube.com/watch?v=Sye3mu-EoTI в одном из своих выступлений, рассказывающем об оболочке, около 19:00 вы можете услышать, как он упоминает, почему
e
псевдоним для редактора по умолчанию в оболочках Unix это связано с тем, что старые терминалы, где их было не так удобно или просто использовать и печатать на них, были неприятным опытом.Он упоминает точную модель, https://en.wikipedia.org/wiki/Teletype_Model_33 в данном случае.
После некоторых исследований ( http://www.pdp8.net/asr33/asr33.shtml ) я обнаружил, что эта машина позволяет вам выбирать только из 64 символов, даже не полную поддержку ASCII в США, от 2 до 6 символов Это 6-битная комбинация.
Фактически, эта машина вообще не имеет ничего общего с ASCII, а это означает, что она даже не поддерживает только первые 64 символа ASCII, она просто использует совершенно не связанный набор входов и, вероятно, не стандартный (для нашей современной эпохи) набор символов ,
с http://www.pdp8.net/asr33/asr33.shtml
и это просто доказывает, что это определенно не US ASCII, учитывая тот факт, что для поддержки заглавных букв вам действительно нужно более 6 бит, заглавные буквы выходят за отметку 64 символа (или значение 63 в десятичном виде, если вы хотите следовать таблице)
Теперь мы знаем, что мы получаем 64 символа из этой вещи без какого-либо реального стандарта для поддержки их в кодированной таблице, и у нас также нет строчных букв, только заглавные буквы плюс символы и цифры.
Благодаря этому сайту http://keyboards.jargon-file.org/#ASR33 я могу показать вам раскладку такой клавиатуры
и нажав SHIFT, вы также получите
Также есть немного больше информации о том, как кодируются физические соединения, которые генерируют символы: http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (страница также поясняет, что ASR33 и символы ASCII различаются вплоть до уровня битов).
Я думаю, что интересно отметить, что нет
{
или}
только есть,(
и)
это означает, что, вероятно, создание подоболочек было в порядке, но создание новых процессов, вероятно, было не так легко или разрешено терминалом.В конце концов, я не думаю, что есть реальный научный ответ, вероятно, это был «свободный» персонаж, ожидающий особого значения; одно точно: оболочки и терминалы старше, чем ASCII, и размышления об ASCII или любой закодированной таблице, какой мы их знаем сегодня, вероятно, не решат загадку.
источник
:
знаке и оболочки stackoverflow.com/questions/3224878/...