Kolon neden yol ayırıcı olarak seçildi?


22

Neden kolon ( :) yol ayırıcı olarak seçildi?

"Yol ayırıcı" derken, "dizin ayırıcı" demediğimi unutmayın. Yol ayırıcı, PATHortam değişkenindeki girişler arasına yerleştirilen semboldür .

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

Bilgisayarlardaki ve yazılımlardaki her şey bir zamanlar birileri tarafından kasten verilen bir karardı. Örneğin, neden tilde ev dizinini temsil ediyor (ve neden vi de yön tuşları için hjkl) . Bu kararın arka planını bilmek isterim.


Bazı rastgele gerçekler:

Yol ayırıcı olarak iki noktaya sahip olmak, adında iki nokta işaretli bir dizinin yola eklenemeyeceği anlamına gelir.

POSIX’den:

Beri <colon>bu bağlamda bir ayırıcı olup, PATH içinde kullanılabilecek dizin adları içermemelidir <colon>karakter.

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

Kolondan kaçmak mümkün görünmüyor. @ Stack Overflow'tan Random832, PATH kaynak kodunu kontrol etti ve kaçış mekanizması bulunmadı.

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


Bu aynı zamanda /etc/passwd(ayrıca evdeki ve kabuk sütunlarındaki yolları da içeren) ayırıcıdır .
Stéphane Chazelas


11
Dün bu soruyu araştırmak için yaklaşık yarım saat harcadım. Kolon kullanımını belirten ancak kolonun (örn.) Boru sembolünden neden seçilmediğini belirten 1971 Unix Programcı El Kitabı'nı okudum. Ayrıca Multics hakkında elimden geldiğince okudum ama görünüşe göre PATH'inde yalnızca bir dizin vardı (bu nedenle ayırmaya gerek yok). Burada iyi bir cevap alacağımızdan şüpheliyim, ancak bazı deneyimli Unix kullanıcılarının bu soruyu cevaplama şansı varsa, fırsatın olmasını isterdim, bu yüzden yeniden açmak için oy kullanıyorum.
Anthony G - Monica için adalet,

3
Bir kabuk / ortam değişkeni olmuştur olmayabilir denilen PATH getirilmesi önce (1979 yılında) Unix Version 7 , ama bir orada :1977. kadar erken -delimited arama yolu  PWB / Unix (Programcı Tezgahı) kullanılan Mashey kabuğunu tarafından yazılmış, Thompson ve Bourne kabuğu arasında kronolojik olarak düşen John R. Mashey . … (Devam ediyor)
G-Man

3
(Devam)…  Mashey kabuğu 26 kabuk değişkenini destekledi (adlarının ne olduğunu tahmin edin) - ve değişken p, dizinleri virgüllerle ayırarak arama yoluydu (“komut yürütme için Shell dizini arama sırası” olarak adlandırılır). ……………………………………………………………… Eğlence gerçeği: Mashey kabuğu .profiledosyayı işlerken , aynı zamanda $pçağrılan dosyada bir başlangıç değeri belirtmenize izin verdi .path.
G-Man

Yanıtlar:


3

Bir miktar kazıdan sonra gerçek bir cevabım yok, fakat en azından bazı tarihi gerçeklerin desteklediği bu sohbete ekleyeceğim yeni bilgiler var.

İşte Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI , kabuktan bahseden konuşmalarından birinde, saat 19:00 civarında e, varsayılan editör için takma adın neden olduğunu belirttiğini duyabilirsiniz. unix kabuğunda, bu kadar rahat veya kullanımı kolay olmayan ve üzerine yazı yazmak tatsız bir deneyim olduğu için eski terminaller.

Kesin bir modelden bahsediyor , bu durumda https://en.wikipedia.org/wiki/Teletype_Model_33 .

Bazı araştırmalardan sonra ( http://www.pdp8.net/asr33/asr33.shtml ) Bu makinenin yalnızca 6 karakter gücüne kadar tam ABD ASCII desteği olmasa da, 64 karakterlik bir havuzda toplanmasına izin verdiğini biliyorum. , 6 bitlik bir kombinasyon.

Bu makinenin ASCII ile hiçbir ilgisi yok, yani bir ASCII'nin sadece ilk 64 karakterini bile desteklemiyor, sadece tamamen ilgisiz bir girdiler setine gidiyor ve muhtemelen standart (bizim modern çağımız için) karakter setine gidiyor .

ASR 33 teletipi yalnızca BÜYÜK HARF HARFLERİ, sayıları ve sembolleri için izin verilen 64 karakteri yazdırabilir.

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

ve bu sadece ABD ASCII’nin, büyük harfleri 6 bitten daha fazlasına ihtiyaç duyduğunuzda desteklemek için verilmediğini kesin olarak kanıtlamadığını, büyük harflerin 64 karakter işaretinin (veya bir tabloyu izlemek için ondalık değerin 63) ötesinde olduğunu kanıtlar.

    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 

Artık biliyoruz ki, kodlanmış masada onları desteklemekte gerçek bir standart olmadan 64 karakterden kurtulduğumuzu biliyoruz ve ayrıca küçük harflere de sahip değiliz, sadece büyük harf artı sembol ve rakamlara sahip değiliz.

Bu web sitesi sayesinde http://keyboards.jargon-file.org/#ASR33 Size bu klavyenin giriş düzenini gösterebilirim

görüntü tanımını buraya girin

ÜST KRKT tuşuna basarak da

görüntü tanımını buraya girin

Karakterleri oluşturan fiziksel bağlantıların nasıl kodlandığı hakkında da biraz daha fazla bilgi var: http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (sayfa ayrıca ASR33’ün ve ASCII karakterleri bit seviyesine kadar farklıdır).

Ben hiçbir vardır nota ilginç olduğunu düşünüyorum {ya }ama sadece (ve )muhtemelen oluşturarak altkabuklarda tamam ama yeni süreçlerin yaratılması idi araçlar muhtemelen o kadar kolaydı ya terminalden izin verdiği.

Sonunda gerçek bir bilimsel cevap olduğunu sanmıyorum , muhtemelen özel bir anlam bekleyen "özgür" bir karakterdi; Bunlardan biri shure tho: mermiler ve terminaller ASCII'den daha eski ve ASCII veya kodlu bir tablo hakkında düşünmek bugün bildiğimiz gibi muhtemelen misteriyi çözmeyecek.


:işareti ve kabuk üzerinde daha fazlası stackoverflow.com/questions/3224878/…
user31223
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.