Warum wurde der Doppelpunkt als Pfadtrennzeichen gewählt?


22

Warum wurde Doppelpunkt ( :) als Pfadtrennzeichen gewählt?

Beachten Sie, dass ich "Pfadtrennzeichen" und nicht "Verzeichnistrennzeichen" meine. Pfadtrennzeichen ist das Symbol zwischen den Einträgen in der PATHUmgebungsvariablen.

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

Alles, was mit Computern und Software zu tun hatte, war einst eine bewusste Entscheidung, die irgendwo jemand getroffen hatte. Zum Beispiel, warum Tilde Heimatverzeichnis darstellt (und warum hjkl für Richtungstasten in vi) . Ich möchte den Hintergrund für diese Entscheidung kennen.


Einige zufällige Fakten:

Ein Doppelpunkt als Pfadtrennzeichen bedeutet, dass dem Pfad kein Verzeichnis mit einem Doppelpunkt im Namen hinzugefügt werden kann.

von POSIX:

Da <colon>es sich in diesem Zusammenhang um ein Trennzeichen handelt, sollten Verzeichnisnamen, die möglicherweise in PATH verwendet werden, kein <colon>Zeichen enthalten.

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

Es scheint nicht möglich zu sein, dem Dickdarm zu entkommen. @ Random832 von Stack Overflow hat den Quellcode überprüft, der PATH verarbeitet, und keinen Escape-Mechanismus gefunden.

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


Das ist auch das Trennzeichen für /etc/passwd(das auch Pfade in den Spalten home und shell enthält).
Stéphane Chazelas


11
Ich habe gestern ungefähr eine halbe Stunde damit verbracht, diese Frage zu untersuchen. Ich habe das Unix-Programmierhandbuch von 1971 gelesen, in dem die Verwendung eines Doppelpunkts angegeben ist, aber nicht der Grund, warum ein Doppelpunkt anstelle eines (z. B.) Pipe-Symbols ausgewählt wurde. Ich habe auch so viel wie möglich über Multics gelesen, aber es gab anscheinend nur ein Verzeichnis in seinem PATH (also kein Trennzeichen). Ich bezweifle, dass wir hier eine gute Antwort bekommen werden, aber wenn die Chance besteht, dass ein erfahrener Unix-Benutzer diese Frage beantworten kann, möchte ich, dass er die Gelegenheit dazu hat, und ich stimme für die Wiedereröffnung.
Anthony G - Gerechtigkeit für Monica

3
Es gab möglicherweise keine Shell- / Umgebungsvariable, die PATH vor der Einführung von Unix Version 7 (1979): aufgerufen wurde , aber bereits 1977 gab es einen durch -begrenzten Suchpfad.  PWB / Unix (Programmer's Workbench) verwendete die Mashey-Shell von John R. Mashey , der chronologisch zwischen der Thompson-Shell und der Bourne-Shell fiel. … (Fortsetzung)
G-Man sagt, dass Monica

3
(Fortsetzung)…  Die Mashey-Shell unterstützte 26 Shell-Variablen (raten Sie mal, wie sie pheißen ) - und Variable war der Suchpfad (als „Shell-Verzeichnis-Suchsequenz für die Befehlsausführung“ bezeichnet), wobei die Verzeichnisse durch Doppelpunkte getrennt waren. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Spaß Tatsache: Während die Mashey Shell die verarbeitete .profileDatei, ist es auch erlauben Sie einen ersten angeben $pgenannten Wert in der Datei .path.
G-Man sagt, dass Monica

Antworten:


3

Nach einigem Graben habe ich keine wirkliche Antwort, aber zumindest neue Informationen, die ich zu dieser Unterhaltung hinzufügen kann, die von einigen historischen Fakten gestützt wird.

Hier ist Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI in einer seiner Reden über die Shell. Gegen 19:00 Uhr können Sie ihn erwähnen hören, warum eder Alias ​​für den Standardeditor ist In Unix-Shells ist dies darauf zurückzuführen, dass ältere Terminals nicht so komfortabel oder einfach zu bedienen waren und das Tippen auf ihnen eine unangenehme Erfahrung war.

Er erwähnt ein genaues Modell, in diesem Fall https://en.wikipedia.org/wiki/Teletype_Model_33 .

Nach einigen Nachforschungen ( http://www.pdp8.net/asr33/asr33.shtml ) kann ich feststellen, dass Sie mit diesem Computer nur einen Pool von 64 Zeichen auswählen können, nicht einmal volle US-ASCII-Unterstützung, 2 hoch 6 Zeichen Es ist eine 6-Bit-Kombination.

Infact Diese Maschine hat überhaupt nichts mit ASCII zu tun, was bedeutet, dass sie nicht einmal die ersten 64 Zeichen eines ASCII unterstützt, sondern nur einen völlig unabhängigen Satz von Eingaben und wahrscheinlich keinen Standardzeichensatz (für unsere moderne Zeit) .

Der ASR 33-Fernschreiber kann 64 Zeichen drucken, die nur für GROSSBUCHSTABEN, Ziffern und Symbole zulässig sind.

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

und dies beweist nur, dass es definitiv kein US-ASCII ist, da zur Unterstützung von Großbuchstaben wirklich mehr als 6 Bits benötigt werden. Die Großbuchstaben überschreiten die 64-Zeichen-Marke (oder den Wert 63 in Dezimalschrift, wenn Sie einer Tabelle folgen möchten).

    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 

Jetzt wissen wir, dass wir aus dieser Sache 64 Zeichen bekommen, ohne dass ein wirklicher Standard sie in einer codierten Tabelle unterstützt, und wir haben auch keine Kleinbuchstaben, nur Großbuchstaben plus Symbole und Zahlen.

Dank dieser Website http://keyboards.jargon-file.org/#ASR33 kann ich Ihnen das Eingabelayout einer solchen Tastatur zeigen

Bildbeschreibung hier eingeben

und durch Drücken der UMSCHALTTASTE erhalten Sie auch

Bildbeschreibung hier eingeben

Es ist auch ein bisschen mehr Informationen darüber , wie die physikalischen Verbindungen, die die Zeichen erzeugen , werden codiert http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (die Seite auch klargestellt , dass ASR33 und ASCII-Zeichen unterscheiden sich je nach Bit-Ebene.

Ich denke , dass es zu Notiz interessant ist , dass es keine {oder }aber nur (und )was bedeutet , dass wahrscheinlich die Schaffung Subshells war ok , aber die Schaffung neuer Prozesse war wahrscheinlich nicht so einfach , oder durch das Endgerät erlaubt.

Letztendlich glaube ich nicht, dass es eine echte wissenschaftliche Antwort gibt, es war wahrscheinlich ein "freies" Zeichen, das auf eine besondere Bedeutung wartete; Eines ist jedoch sicher: Shells und Terminals sind älter als ASCII und das Nachdenken über ASCII oder eine beliebige codierte Tabelle, wie wir sie heute kennen, wird das Geheimnis wahrscheinlich nicht lösen.


mehr auf dem :Schild und der Shell stackoverflow.com/questions/3224878/…
user31223
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.