Pourquoi le côlon a-t-il été choisi comme séparateur de chemin

22

Pourquoi le côlon (: ) choisi comme séparateur de chemin?

Notez que je veux dire "séparateur de chemin" et non "séparateur de répertoire". Le séparateur de chemin est le symbole placé entre les entrées de la PATHvariable d'environnement.

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

Tout dans les ordinateurs et les logiciels était autrefois une décision délibérée prise par quelqu'un quelque part. Par exemple, pourquoi tilde représente le répertoire d'origine (et pourquoi hjkl pour les touches de direction dans vi) . J'aime connaître le contexte de cette décision.


Quelques faits aléatoires:

Le fait d'avoir deux points comme séparateur de chemin signifie que le répertoire avec deux points dans le nom ne peut pas être ajouté au chemin.

de POSIX:

Étant donné qu'il <colon>s'agit d'un séparateur dans ce contexte, les noms de répertoire qui pourraient être utilisés dans PATH ne devraient pas inclure de <colon>caractère.

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html

Il ne semble pas possible d'échapper au colon. @ Random832 de Stack Overflow a inspecté le code source gérant PATH et n'a trouvé aucun mécanisme d'échappement.

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

lesmana
la source
C'est également le séparateur de /etc/passwd(qui contient également des chemins dans les colonnes home et shell).
Stéphane Chazelas
11
Hier, j'ai passé une demi-heure à faire des recherches sur cette question. J'ai lu le manuel du programmeur Unix de 1971 qui spécifie l'utilisation d'un deux-points, mais pas la raison pour laquelle le deux-points a été choisi (par exemple) un symbole de tuyau. J'ai également lu autant de choses que possible sur Multics, mais il n'avait apparemment qu'un seul répertoire dans son CHEMIN (donc pas besoin de séparateur). Je doute que nous obtenions une bonne réponse ici, mais s'il est possible qu'un utilisateur vétéran d'Unix puisse répondre à cette question, j'aimerais qu'ils en aient l'occasion, alors je vote pour rouvrir.
Anthony G - justice pour Monica
3
Il n'y avait peut-être pas de variable shell / environnement appelée PATH avant l'introduction d' Unix version 7 (en 1979) , mais il y avait un :chemin de recherche délimité dès 1977.  PWB / Unix (Programmer's Workbench) utilisait le shell Mashey , écrit par John R. Mashey , qui se situait chronologiquement entre les obus Thompson et Bourne. … (Suite)
G-Man dit «Réintègre Monica» le
3
(Suite)…  Le shell Mashey supportait 26 variables shell (devinez quels étaient leurs noms) - et la variable pétait le chemin de recherche (appelé «la séquence de recherche de répertoire Shell pour l'exécution des commandes»), avec des répertoires séparés par des deux-points. ………………………………………………………………… Fait amusant: tandis que le shell Mashey traitait le .profilefichier, il vous permettait également de spécifier une $pvaleur initiale dans le fichier appelé .path.
G-Man dit `` Réintègre Monica '' le

Réponses:

3

Après quelques recherches, je n'ai pas de vraie réponse mais au moins de nouvelles informations à ajouter à cette conversation appuyées par des faits historiques.

Voici Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI dans l'un de ses discours parlant de l'obus, vers 19h00, vous pouvez l'entendre dire pourquoie l'alias de l'éditeur par défaut est dans les coques Unix, c'est parce que les terminaux plus anciens n'étaient pas si confortables ou faciles à utiliser et à taper dessus était une expérience désagréable.

Il mentionne un modèle précis, le https://en.wikipedia.org/wiki/Teletype_Model_33 dans ce cas.

Après quelques recherches ( http://www.pdp8.net/asr33/asr33.shtml ), je trouve que cette machine ne vous permet de choisir que dans un pool de 64 caractères, pas même le support ASCII US complet, 2 à la puissance de 6 caractères , c'est une combinaison de 6 bits.

En fait, cette machine n'a rien à voir avec ASCII du tout, ce qui signifie qu'elle ne prend même pas en charge uniquement les 64 premiers caractères d'un ASCII, elle va juste pour un jeu d'entrées totalement indépendant et probablement pas un jeu de caractères standard (pour notre ère moderne) .

Le télétype ASR 33 peut imprimer 64 caractères, ce qui n'autorise que les lettres majuscules, les chiffres et les symboles.

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

et cela prouve simplement que ce n'est certainement pas US ASCII étant donné que pour prendre en charge les lettres majuscules, vous avez vraiment besoin de plus de 6 bits, les lettres majuscules dépassent la marque de 64 caractères (ou la valeur 63 en décimal si vous souhaitez suivre un tableau)

    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 

Maintenant, nous savons que nous obtenons 64 caractères de cette chose, sans véritable standard pour les prendre en charge dans la table codée et nous n'avons pas non plus de lettres minuscules, juste des majuscules plus des symboles et des chiffres.

Grâce à ce site http://keyboards.jargon-file.org/#ASR33 je peux vous montrer la disposition d'entrée d'un tel clavier

entrez la description de l'image ici

et en appuyant sur SHIFT vous obtenez également

entrez la description de l'image ici

Il y a aussi un peu plus d'informations sur la façon dont les connexions physiques qui génèrent les caractères sont codées http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (la page précise également que ASR33 et les caractères ASCII sont différents jusqu'au niveau du bit).

Je pense qu'il est intéressant de noter qu'il n'y a pas {ou }mais seulement (et )ce qui signifie que la création de sous-coquilles était probablement correcte, mais la création de nouveaux processus n'était probablement pas si facile ou autorisée par le terminal.

Au final je ne pense pas qu'il y ait une vraie réponse scientifique , c'était probablement un personnage "libre" en attente d'une signification particulière; une chose est sûre: les shells et les terminaux sont plus anciens que ASCII et penser à ASCII ou à toute table codée telle que nous les connaissons aujourd'hui ne va probablement pas résoudre le mystère.

user31223
la source
plus sur le :signe et le shell stackoverflow.com/questions/3224878/…
user31223