Чому в якості роздільника шляху було обрано двокрапку


22

Чому двокрапка ( :) була обрана як роздільник шляху?

Зауважте, що я маю на увазі "роздільник шляху", а не "роздільник каталогів". Роздільник шляху - це символ, розміщений між записами в PATHзмінній середовища.

PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
                     ^ this symbol

Все в комп'ютерах і програмному забезпеченні колись було навмисним рішенням, якийсь десь десь приймав. Наприклад, чому tilde являє собою домашній dir (і чому hjkl для клавіш спрямування in 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(який також містить шляхи в домашніх і стовпцях оболонки).
Стефан Шазелас


11
Учора я витратив близько півгодини на дослідження цього питання. Я прочитав посібник програміста Unix 1971 року, де вказано використання двокрапки, але не причина, чому двокрапка була обрана над (наприклад) символом труби. Я також читав, як тільки міг про Multics, але він, мабуть, мав лише один каталог у своєму PATH (тому немає необхідності в розділювачі). Я сумніваюся, що ми отримаємо хорошу відповідь, але якщо є шанс, що якийсь користувач-ветеран Unix міг би відповісти на це питання, я хотів би, щоб вони мали можливість, тому я голосую за повторне відкриття.
Ентоні Г - справедливість для Моніки

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

3
(Продовжував)… Оболонка Mashey підтримувала 26 змінних оболонок (здогадуйтесь,  як називали їх назви) - змінною pбув шлях пошуку (званий «послідовність пошуку каталогу каталогу Shell для виконання команд»), з каталогами, розділеними колонами. ……………………………………………………………… Веселий факт: поки оболонка Машеї обробляла .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-бітна комбінація.

Infact ця машина взагалі не має нічого спільного з ASCII, це означає, що він навіть не підтримує лише перші 64 символи ASCII, це просто повний неспоріднений набір входів і, мабуть, не стандартний (для нашої сучасної епохи) набір символів .

Телетайп ASR 33 може друкувати 64 символи, які дозволені лише для ВИПАДКОВИХ ЛІТЕРІВ ДІЯЛЬНОСТІ, цифр та символів.

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

і це просто доводить, що це точно 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.