Mengapa usus besar dipilih sebagai pemisah jalur

22

Mengapa titik dua ( :) dipilih sebagai pemisah jalur?

Perhatikan bahwa maksud saya "pemisah jalur" dan bukan "pemisah direktori". Pemisah jalur adalah simbol yang ditempatkan di antara entri dalam PATHvariabel lingkungan.

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

Segala sesuatu dalam komputer dan perangkat lunak dulunya merupakan keputusan yang disengaja yang dibuat oleh seseorang di suatu tempat. Misalnya mengapa tilde merepresentasikan dir home (dan mengapa hjkl untuk kunci arah di vi) . Saya suka mengetahui latar belakang keputusan ini.


Beberapa fakta acak:

Memiliki titik dua sebagai pemisah jalur berarti direktori dengan titik dua dalam namanya tidak dapat ditambahkan ke jalur.

dari POSIX:

Karena <colon>merupakan pemisah dalam konteks ini, nama direktori yang mungkin digunakan dalam PATH tidak boleh menyertakan <colon>karakter.

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

Tampaknya tidak mungkin untuk melarikan diri dari usus besar. @ Random832 dari Stack Overflow memeriksa kode sumber yang menangani PATH dan tidak menemukan mekanisme melarikan diri.

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

lesmana
sumber
Itu juga pemisah untuk /etc/passwd(yang juga berisi path di kolom home dan shell).
Stéphane Chazelas
11
Saya menghabiskan sekitar setengah jam kemarin meneliti pertanyaan ini. Saya membaca 1971 Unix Programmer's Manual yang menentukan penggunaan titik dua tetapi bukan alasan mengapa titik dua dipilih (misalnya) simbol pipa. Saya juga membaca sebanyak mungkin tentang Multics tetapi ternyata hanya memiliki satu direktori di PATH-nya (jadi tidak perlu separator). Saya ragu kami akan mendapatkan jawaban yang baik di sini, tetapi jika ada kemungkinan beberapa pengguna veteran Unix dapat menjawab pertanyaan ini, saya ingin mereka memiliki kesempatan, jadi saya memilih untuk membuka kembali.
Anthony G - keadilan untuk Monica
3
Mungkin tidak ada variabel shell / lingkungan yang dipanggil PATH sebelum pengenalan Unix Versi 7 (pada 1979) , tetapi ada :jalur pencarian -diselar pada awal 1977.  PWB / Unix (Programmer's Workbench) menggunakan Mashey shell , ditulis oleh John R. Mashey , yang jatuh secara kronologis antara cangkang Thompson dan cangkang Bourne. … (Lanjutan)
G-Man Mengatakan 'Reinstate Monica'
3
( Lanjutkan ) ...  Shell Mashey mendukung 26 variabel shell (tebak apa nama mereka) - dan variabel padalah jalur pencarian (disebut "urutan pencarian direktori Shell untuk eksekusi perintah"), dengan direktori dipisahkan oleh titik dua. ... ... ... ... ... ... ... ... ... ... "..." ... "..." ... "..." ... Fakta ...: Sementara shell Mashey memproses .profilefile, itu juga memungkinkan Anda untuk menentukan $pnilai awal dalam file yang dipanggil .path.
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

3

Setelah beberapa penggalian, saya tidak memiliki jawaban nyata tetapi setidaknya informasi baru untuk ditambahkan ke percakapan ini didukung oleh beberapa fakta sejarah.

Berikut adalah Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI dalam salah satu pidatonya berbicara tentang shell, sekitar tanda 19:00 Anda dapat mendengar dia menyebutkan mengapa ealias untuk editor default di shell unix, itu karena terminal yang lebih tua di mana tidak begitu nyaman atau mudah digunakan dan mengetik pada mereka adalah pengalaman yang tidak menyenangkan.

Dia menyebutkan model yang tepat, https://en.wikipedia.org/wiki/Teletype_Model_33 dalam kasus ini.

Setelah beberapa penelitian ( http://www.pdp8.net/asr33/asr33.shtml ) Saya menemukan bahwa mesin ini hanya memungkinkan Anda memilih kumpulan 64 karakter, bahkan tidak mendukung ASCII AS penuh, 2 pangkat 6 karakter , ini kombinasi 6 bit.

Infact mesin ini tidak ada hubungannya dengan ASCII sama sekali, yang berarti bahwa itu bahkan tidak mendukung hanya 64 karakter pertama dari ASCII, itu hanya terjadi untuk set input yang sama sekali tidak terkait dan mungkin tidak set karakter standar (untuk era modern kita) .

Teletype ASR 33 dapat mencetak 64 karakter yang hanya diperbolehkan untuk SURAT KASUS, angka, dan simbol UPPER.

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

dan ini hanya membuktikan bahwa itu pasti bukan AS ASCII mengingat fakta bahwa untuk mendukung huruf besar Anda benar-benar membutuhkan lebih dari 6 bit, huruf besar melampaui tanda chars 64 (atau nilai 63 dalam desimal jika Anda ingin mengikuti tabel)

    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 

Sekarang kita tahu bahwa kita mendapatkan 64 karakter dari hal ini, tanpa standar nyata untuk mendukungnya dalam tabel kode dan kita juga tidak memiliki huruf kecil, hanya huruf besar ditambah simbol dan angka.

Berkat situs web ini, http://keyboards.jargon-file.org/#ASR33, saya dapat menunjukkan tata letak input keyboard tersebut

masukkan deskripsi gambar di sini

dan dengan menekan SHIFT Anda juga dapatkan

masukkan deskripsi gambar di sini

Ada juga sedikit informasi lebih lanjut tentang bagaimana koneksi fisik yang menghasilkan karakter dikodekan http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (halaman ini juga menjelaskan bahwa ASR33 dan karakter ASCII berbeda hingga level bit).

Saya pikir itu menarik untuk dicatat bahwa tidak ada {atau }tetapi hanya (dan )yang berarti bahwa mungkin membuat subkulit itu ok tapi membuat proses baru mungkin tidak begitu mudah atau diizinkan oleh terminal.

Pada akhirnya saya tidak berpikir bahwa ada jawaban ilmiah sungguhan , mungkin itu adalah karakter "bebas" yang menunggu makna khusus; satu hal adalah shure tho: shell dan terminal lebih tua dari ASCII dan berpikir tentang ASCII atau tabel kode seperti yang kita kenal sekarang mungkin tidak akan menyelesaikan misteri.

pengguna31223
sumber
lebih lanjut tentang :tanda dan shell stackoverflow.com/questions/3224878/…
user31223