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 PATH
Umgebungsvariablen.
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.
/etc/passwd
(das auch Pfade in den Spalten home und shell enthält).%
speziell in$PATH
.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)p
heiß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.profile
Datei, ist es auch erlauben Sie einen ersten angeben$p
genannten Wert in der Datei.path
.Antworten:
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
e
der 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) .
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).
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
und durch Drücken der UMSCHALTTASTE erhalten Sie auch
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.
quelle
:
Schild und der Shell stackoverflow.com/questions/3224878/…