Почему двоеточие было выбрано в качестве разделителя пути


22

Почему двоеточие ( :) было выбрано в качестве разделителя пути?

Обратите внимание, что я имею в виду «разделитель пути», а не «разделитель каталогов». Разделитель пути - это символ, помещенный между записями в 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, и не обнаружил механизма выхода.

/programming/14661373/how-to-escape-colon-in-path-on-unix


Это также разделитель для /etc/passwd(который также содержит пути в столбцах home и shell).
Стефан Шазелас


11
Вчера я потратил около получаса на изучение этого вопроса. Я прочитал Руководство программиста Unix 1971 года, в котором указано использование двоеточия, но не причина, по которой двоеточие было выбрано вместо (например) символа канала. Я также читал столько, сколько мог о Multics, но у него, видимо, был только один каталог в его PATH (поэтому нет необходимости в разделителе). Я сомневаюсь, что здесь мы получим хороший ответ, но если есть шанс, что какой-нибудь опытный пользователь Unix сможет ответить на этот вопрос, я бы хотел, чтобы у них была такая возможность, поэтому я голосую за его повторное открытие.
Энтони Дж. - правосудие для Моники

3
Там не может быть переменные оболочки / окружающей среды называется PATH до введения Unix версии 7 (в 1979 году) , но был :-delimited путь поиска еще в 1977.  PWB / Unix (программист Workbench) используется в Mashey оболочке , написанной Джон Р. Машей , который хронологически попал между оболочкой Томпсона и оболочкой Борна. … (Продолжение)
G-Man говорит: «Восстановите Монику»

3
(Продолжение)…  Оболочка Mashey поддерживает 26 переменных оболочки (угадайте, каковы их имена) - и переменная pпредставляет собой путь поиска (называемый «последовательность поиска в каталоге Shell для выполнения команды»), с каталогами, разделенными двоеточиями. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Интересный факт: в то время, как оболочка Mashey обрабатывает .profileфайл, она также позволяет вам указать начальное $pзначение в файле с именем .path.
G-Man говорит: «Восстановите Монику»

Ответы:


3

После некоторых раскопок у меня нет реального ответа, но есть, по крайней мере, новая информация для добавления в этот разговор, подкрепленная некоторыми историческими фактами.

Вот Питер Чубб 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, она просто использует совершенно не связанный набор входов и, вероятно, не стандартный (для нашей современной эпохи) набор символов ,

Телетайп ASR 33 может печатать 64 символа, которые допускаются только для верхних букв, чисел и символов.

с http://www.pdp8.net/asr33/asr33.shtml

и это просто доказывает, что это определенно не US ASCII, учитывая тот факт, что для поддержки заглавных букв вам действительно нужно более 6 бит, заглавные буквы выходят за отметку 64 символа (или значение 63 в десятичном виде, если вы хотите следовать таблице)

    0 NUL    16 DLE    32      48 0    64 @    80 P    96 `   112 p 
    1 SOH    17 DC1    33 !    49 1    65 A    81 Q    97 a   113 q 
    2 STX    18 DC2    34 "    50 2    66 B    82 R    98 b   114 r 
    3 ETX    19 DC3    35 #    51 3    67 C    83 S    99 c   115 s 
    4 EOT    20 DC4    36 $    52 4    68 D    84 T   100 d   116 t 
    5 ENQ    21 NAK    37 %    53 5    69 E    85 U   101 e   117 u 
    6 ACK    22 SYN    38 &    54 6    70 F    86 V   102 f   118 v 
    7 BEL    23 ETB    39 '    55 7    71 G    87 W   103 g   119 w 
    8 BS     24 CAN    40 (    56 8    72 H    88 X   104 h   120 x 
    9 HT     25 EM     41 )    57 9    73 I    89 Y   105 i   121 y 
   10 LF     26 SUB    42 *    58 :    74 J    90 Z   106 j   122 z 
   11 VT     27 ESC    43 +    59 ;    75 K    91 [   107 k   123 { 
   12 FF     28 FS     44 ,    60 <    76 L    92 \   108 l   124 | 
   13 CR     29 GS     45 -    61 =    77 M    93 ]   109 m   125 } 
   14 SO     30 RS     46 .    62 >    78 N    94 ^   110 n   126 ~ 
   15 SI     31 US     47 /    63 ?    79 O    95 _   111 o   127 DEL 

Теперь мы знаем, что мы получаем 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/...
user31223
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.