Perché i due punti sono stati scelti come separatori di percorso


22

Perché i due punti ( :) sono stati scelti come separatori di percorso?

Nota che intendo "separatore di percorso" e non "separatore di directory". Il separatore di percorso è il simbolo posto tra le voci nella PATHvariabile di ambiente.

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

Tutto in computer e software una volta era una decisione deliberata presa da qualcuno da qualche parte. Ad esempio, perché tilde rappresenta home dir (e perché hjkl per i tasti di direzione in vi) . Mi piace conoscere lo sfondo di questa decisione.


Alcuni fatti casuali:

Avere due punti come separatore di percorso significa che la directory con due punti nel nome non può essere aggiunta al percorso.

da POSIX:

Poiché <colon>è un separatore in questo contesto, i nomi di directory che potrebbero essere utilizzati in PATH non devono includere un <colon>carattere.

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

Sembra che non sia possibile sfuggire al colon. @ Random832 da Stack Overflow ha ispezionato il codice sorgente gestendo PATH e non ha trovato alcun meccanismo di escape.

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


Questo è anche il separatore per /etc/passwd(che contiene anche percorsi nelle colonne home e shell).
Stéphane Chazelas,


11
Ho trascorso circa mezz'ora ieri alla ricerca di questa domanda. Ho letto il Manuale del programmatore Unix del 1971 che specifica l'uso di due punti, ma non il motivo per cui i due punti sono stati scelti sopra (ad esempio) il simbolo della pipa. Ho anche letto tutto ciò che potevo su Multics ma, a quanto pare, aveva solo una directory nel suo PERCORSO (quindi non c'è bisogno di separatore). Dubito che avremo una buona risposta qui, ma se c'è la possibilità che un utente veterano di Unix possa rispondere a questa domanda, mi piacerebbe che avessero l'opportunità, quindi voterò per riaprire.
Anthony G - giustizia per Monica,

3
Potrebbe non esserci stata una variabile shell / ambiente chiamata PATH prima dell'introduzione della versione 7 di Unix (nel 1979) , ma c'era un :percorso di ricerca delimitato già nel 1977.  PWB / Unix (Programmer's Workbench) utilizzava la shell Mashey , scritta da John R. Mashey , che cadde cronologicamente tra la conchiglia Thompson e la conchiglia Bourne. ... (proseguendo)
G-Man dice "Ripristina Monica" il

3
(Continua) ...  La shell Mashey supportava 26 variabili shell (indovinate quali fossero i loro nomi) - e la variabile pera il percorso di ricerca (chiamato "sequenza di ricerca della directory Shell per l'esecuzione del comando"), con directory separate da due punti. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Fatto divertente: mentre la shell Mashey ha elaborato il .profilefile, ti ha anche permesso di specificare un $pvalore iniziale nel file chiamato .path.
G-Man dice "Ripristina Monica" il

Risposte:


3

Dopo alcuni scavi non ho una vera risposta ma almeno nuove informazioni da aggiungere a questa conversazione supportata da alcuni fatti storici.

Ecco Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI in uno dei suoi discorsi che parla della shell, verso le 19:00 puoi sentirlo menzionare perché eè l'alias dell'editor predefinito nelle shell unix, è perché i terminali più vecchi in cui non erano così comodi o facili da usare e digitarli era un'esperienza spiacevole.

Sta citando un modello preciso, l' https://en.wikipedia.org/wiki/Teletype_Model_33 in questo caso.

Dopo alcune ricerche ( http://www.pdp8.net/asr33/asr33.shtml ) scopro che questa macchina ti consente di scegliere solo un pool di 64 caratteri, nemmeno il supporto ASCII completo degli Stati Uniti, 2 alla potenza di 6 caratteri , è una combinazione a 6 bit.

Infatti questa macchina non ha assolutamente nulla a che fare con ASCII, il che significa che non supporta nemmeno i primi 64 caratteri di un ASCII, sta solo cercando un set di input totalmente non correlato e probabilmente non un set di caratteri standard (per la nostra era moderna) .

Il teletipo ASR 33 può stampare 64 caratteri che consentono solo lettere maiuscole, numeri e simboli.

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

e questo dimostra semplicemente che non è sicuramente ASCII USA dato che per supportare lettere maiuscole hai davvero bisogno di più di 6 bit, le lettere maiuscole sono oltre il segno di 64 caratteri (o il valore 63 in decimale se vuoi seguire una tabella)

    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 

Ora sappiamo che otteniamo 64 caratteri da questa cosa, senza alcun vero standard per supportarli nella tabella codificata e inoltre non abbiamo lettere minuscole, solo maiuscole più simboli e numeri.

Grazie a questo sito Web http://keyboards.jargon-file.org/#ASR33 posso mostrarti il ​​layout di input di tale tastiera

inserisci qui la descrizione dell'immagine

e premendo MAIUSC si ottiene anche

inserisci qui la descrizione dell'immagine

Ci sono anche un po 'più di informazioni su come sono codificate le connessioni fisiche che generano i caratteri http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (la pagina chiarisce anche che ASR33 e i caratteri ASCII sono diversi fino al livello dei bit).

Penso che sia interessante notare che non ci sono {o }ma solo (e )ciò significa che probabilmente la creazione di subshells era ok ma la creazione di nuovi processi probabilmente non era così facile o consentita dal terminale.

Alla fine non penso che ci sia una vera risposta scientifica , probabilmente era un personaggio "libero" in attesa di un significato speciale; una cosa è certa: conchiglie e terminali sono più vecchi di ASCII e pensare a ASCII o a qualsiasi tabella codificata come li conosciamo oggi probabilmente non risolverà il mistero.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.