Sejarah (diperoleh bukan melalui penelitian tetapi melalui menghabiskan terlalu banyak waktu bergaul dengan orang-orang Bell Labs):
-
Pada awalnya (jika Anda menganggap awalnya adalah Unix Versi 7) adalah Bourne shell. Steve Bourne adalah orang pertama yang menunjukkan bahwa shell yang mengontrol interaksi pengguna bisa menjadi program pengguna dan bukan bagian khusus dari sistem operasi. Sebuah terobosan bersejarah. Shell itu sendiri relatif bersih untuk pembuatan skrip, tetapi tidak memiliki pengeditan baris perintah atau kontrol pekerjaan. Pengantar Unix Shell dari Bourne masih berguna untuk pengguna awal saat ini.
Edit :Saya telah mengabaikan beberapa "prasejarah" dari Ken Thompson dan John Mashey, juga dari Multics. Saya yakin Bourne mengetahui semua pekerjaan ini (dia berada di lab yang sama, 1127, di Bell Labs), tetapi cangkang Bourne sudah pasti, dan pekerjaan sebelumnya memiliki sedikit pengaruh kecuali sebagaimana ditafsirkan oleh Steve Bourne. Misalnya, meskipun Ken kemudian menulis kompiler Plan 9 C dan sangat berpengaruh pada Rencana 9, tetapi makalah Tom Duff tentang shell Plan 9 (rc) hanya menyebutkan shell Bourne, bukan shell Thompson.
-
Shell hanyalah program pengguna, jadi siapa pun dapat menulisnya. Saat Versi 7 Unix dibuat di New Jersey, Berkeley Unix dibuat di California. Bill Joy di Berkeley menulis
csh
, cangkang C. Joy menambahkan kontrol pekerjaan dan sejarah, dan kemudian pengeditan baris perintah, tetapi tidak mengetahui pekerjaan Bourne dan mendasarkan bahasanya pada cangkang Thompson (yang saya anggap "prasejarah" di peluru sebelumnya). Komunitas Unix menyukai kontrol pekerjaan, tetapi mereka juga menyukai bahasa Bourne. Untuk polemik yang tidak terlalu bagus terhadap bahasa csh, lihat Pemrograman Csh Dianggap Berbahaya. Untuk beberapa waktu, banyak orang menggunakancsh
secara interaktif untuk fitur kontrol pekerjaan dan riwayatnya, tetapi menggunakansh
Bourne untuk menulis skrip. Situasi ini kurang ideal.Edit :Terima kasih kepada DigitalRoss karena telah meluruskan saya pada kronologi
csh
. Karena saya mendapat pendidikan dari orang-orang yang menyebut BSD sebagai "bid'ah Berkeley", saya kekurangan fakta di sana. -
Dave Korn di Bell Labs melakukan rekayasa ulang cangkang Bourne yang brilian untuk menghasilkan cangkang Korn (ksh). Itu sepenuhnya kompatibel dengan Bourne shell
sh
tetapi memberikan muatan perbaikan yang tak ternilai.ksh
menjadi dasar standar POSIX dan dikirimkan sebagai standar dengan perangkat lunak Sun. (Ini terlepas dari kenyataan bahwa Bill Joy meninggalkan Berkeley untuk membantu menemukan Sun dan merupakan salah satu orang perangkat lunak terkemuka mereka.) -
Bell Labs dan AT&T dengan bodohnya gagal membuat
ksh
sumber terbuka.ksh88
digunakan secara luas, tetapi memiliki sumber tidak legal. Orang-orang tertentu menjadi sangat kecanduan hingga menjadi penjahat digital.Edit :Apakah ini benar-benar bodoh? Sulit diketahui. Berkeley telah menyerahkan Unix, dan perusahaan lain akan segera menyusul, tetapi ini masih merupakan era ketika Corporate Masters percaya akan mengenakan biaya untuk Unix. Tapi hasilnya:AT&T Unix mati, setelah dijual ke berbagai pihak berkali-kali. BSD dan turunannya masih hidup dan sehat, tetapi hal-hal baru yang disebut "Linux" dan "GNU" ini memiliki sebagian besar mindshare yang dulu dimiliki oleh Bell Labs.
-
Free Software Foundation melakukan "ruang bersih", dari implementasi awal dari shell POSIX, mengambil semua ide Dave Korn sebagai arus, ditambah dengan gaya FSF biasa menambahkan fitur baru mereka sendiri, seperti penyelesaian yang dapat diprogram. Mereka menyebutnya shell "Bourne again", atau
bash
. -
Pada pertengahan 1990-an AT&T open-source
ksh93
, tetapi saat itu sudah terlambat untuk diadopsi secara luas. Perjanjian lisensi anehnya tidak standar.bash
danksh
divergen, danksh
tidak pernah mencapai pangsa pasar yang sepadan dengan tempatnya dalam sejarah.
Pelajaran:
-
Produk pertama yang memadai untuk dipasarkan menang (sh).
-
Orang-orang menyukai fitur baru (kontrol tugas, penyelesaian perintah), tetapi mereka lebih menyukainya ketika skrip lama mereka terus berfungsi.
-
Edit :Profesor teknik harus menyerahkan sejarah kepada sejarawan sains :-)
Bash memiliki dua hal yang sangat berbeda untuk itu.
-
Ini cangkang yang bagus. Ini adalah salah satu dari mungkin 2 shell (yang lainnya adalah zsh) yang mengintegrasikan beberapa
csh
yang keren fitur seperti!
substitusi sejarah ke dalam sintaks posix. Ini memiliki banyak ekstensi, termasuk array. -
Ini adalah shell FSF/GNU. Di dunia open source, ini memberikan semacam cap.
Saya juga harus menambahkan bahwa ini tidak selalu menjadi default. ash
sering digunakan sebagai /bin/sh sehingga while bash
mungkin shell interaktif, ash
adalah shell "jalankan saja file perintah". Ini karena ash
lebih kecil dan lebih cepat, dan berisi fitur posix, jadi ini adalah subset yang tepat. Menggunakan ash
sebagai shell interaktif terkadang bermasalah. Di, katakanlah, NetBSD, itu berfungsi dengan baik, karena itu dibangun dengan semua fitur. Ini semacam cangkang mereka sedangkan bash
adalah paket eksternal. Tapi di Linux ash
biasanya dianggap non-interaktif, jadi mereka mengompilasinya tanpa riwayat dan tanpa pengeditan baris (penting) pada teori yang hanya digunakan untuk menjalankan gnu configure
yang sangat besar itu skrip.
Kisah Dua Kerang
Sejarah sebenarnya dari shell
PEMBARUAN: Ada sejarah yang tidak akurat tentang shell yang disalin dari satu tempat ke tempat lain di web, dan dapat dipahami bahwa orang-orang memercayainya. Saya akan mencoba memberikan versi yang akurat dan memberikan beberapa tautan untuk memperkuatnya di sini.
- Cangkang pertama pastinya bukan cangkang Bourne tetapi ditulis oleh Ken Thompson sendiri dan didistribusikan dalam V6, yang merupakan versi AT&T yang dikirim ke berbagai universitas dan laboratorium pemerintah. Inilah yang menempatkan Unix di peta. Itu memiliki semua dasar,
<, >, >>, |, &
, tetapi hanya memilikigoto
sederhana kontrol sintaks melalui program eksternal yang mencari input standar. Tidak ada skrip shell yang rumit saat itu. Kerang selanjutnya akan membuka input perintah pada fd terpisah. Ini mungkin terlihat sederhana hari ini tetapi dalam film horor komputasi tahun 1970-an itu adalah hal terbaik di dunia. Percaya atau tidak, cangkang kuno ini memiliki aliran twitternya sendiri hari ini dan, tentu saja, beranda. - Cangkang kedua adalah
csh
, ditulis (sepertivi
) oleh Bill Joy di UCB. Ini terjadi sebelum GNU readline dan NetBSD editline, jadi sepertinya sangat masuk akal untuk melakukan sejarah dengan!
sintaksis. Csh menambahkan sebagian besar fitur shell hari ini tetapi dengan sintaks csh. csh tidak mengubah sintaks apa pun , secara cuma-cuma atau sebaliknya. Itu sebenarnya kompatibel dengan shell Thompson, dan awalnya termasuk kode sumber TS. - Cangkang ketiga adalah cangkang Bourne, dengan sintaks yang berbeda. Unix sedang dikembangkan secara paralel di UCB dan AT&T. Shell ini memiliki pengalokasi memori yang aneh (saya pikir itu hanya menggunakan lebih banyak memori, menjebak SIGSEGV, melakukan brk baru (2), dan kemudian mencoba lagi) yang membuatnya sulit dijalankan di port Unix baru, jadi
osh
dancsh
tetap populer untuk beberapa waktu. Tidak ada internet dan berlisensi SW, jadi di lingkungan itu mungkin Stephen Bourne tidak tahu tentang cangkang Joy dan tentu saja Joy tidak tahu tentang Bourne. Ada kemungkinan bahwa kedua cangkang pertama kali bertemu ketika UCB mendapatkan VAX dan prarilis dari Unix/32V yang sekarang terlupakan. Saya ingat Bill mengeluh tentang alokasi memori. Perhatikan bahwa kedua shell kompatibel dengan shell V6 , mereka hanya memperluas sintaks ke arah yang berbeda. - Sekarang benar-benar ada beberapa shell yang tidak kompatibel, di mana AT&T menambahkan
ksh
yang kompatibel dengan Bourne . Terakhir,csh
memiliki kode sumber semi-tersedia, tetapi terikat dalam gugatan antara AT&T dan University of California. Namun, ini adalah masa kejayaan BSD Unix karena perusahaan canggih yang mampu membayar biaya $50.000 akan membeli lisensi AT&T tetapi memasang distribusi 4.x BSD, dan universitas mendapatkannya secara gratis. - Dalam situasi dengan banyak masalah hukum dan teknis ini, berbagai penerapan independen dilakukan. Setidaknya sebanyak yang menggunakan
csh
sintaks seperti yang terjadi pada sintaks Bourne shell, dan beberapa menggabungkan keduanya. Anda memiliki setidaknyatcsh
,zsh
,bash
, danash
. Sintaks Bourne "resmi", menjadi bagian dari rilis AT&T, tetapi pada masa itu BSD cukup penting, dan Sun, awalnya BSD, mendistribusikan Unix SW dalam jumlah yang wajar yang ditemui dunia. - Sebagian karena gugatan USL, FSF dan Linux mendapat ruang terbuka. Sementara itu, AT&T telah berhasil berkelahi dengan salah satu dari sedikit entitas di dunia yang lebih besar dari mereka (Negara Bagian California) dan pada akhirnya mereka tidak memenangkan gugatan tersebut, dan akhirnya distribusi BSD berada di jalur hukum yang kokoh. pijakan. Tapi saat itu Linux dan bash sudah ada di mana-mana, jadi saat ini BSD adalah sebuah ceruk.
- Akhirnya, bash adalah shell yang bagus (walaupun tampaknya tidak diakui secara pribadi oleh penulis aslinya) dan sepenuhnya layak mendapat pujian atas kesuksesannya sendiri. csh akan dikalahkan oleh tcsh dan zsh bahkan jika ash, bash, dan ksh tidak memenangkan perang sintaksis.
Untuk menambahkan apa yang dikatakan @DigitalRoss
- Bash adalah pengganti superset lengkap untuk posix-sh, bahkan jika dipanggil sebagai /bin/sh akan meniru posix-sh seluruhnya. Posix-sh adalah "standar" untuk sistem unix komersial sebagai shell common-denominator. Jadi, sesuatu yang dimulai dari sana dan dibangun di atasnya dimulai dengan banyak hal.