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 PATH
variabel 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.
/etc/passwd
(yang juga berisi path di kolom home dan shell).%
secara khusus di$PATH
.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)p
adalah jalur pencarian (disebut "urutan pencarian direktori Shell untuk eksekusi perintah"), dengan direktori dipisahkan oleh titik dua. ... ... ... ... ... ... ... ... ... ... "..." ... "..." ... "..." ... Fakta ...: Sementara shell Mashey memproses.profile
file, itu juga memungkinkan Anda untuk menentukan$p
nilai awal dalam file yang dipanggil.path
.Jawaban:
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
e
alias 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) .
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)
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
dan dengan menekan SHIFT Anda juga dapatkan
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.
sumber
:
tanda dan shell stackoverflow.com/questions/3224878/…