Apa perbedaan mendasar antara shell * NIX mainstream dan skenario apa yang mungkin mendorong Anda untuk menggunakannya? Saya mengerti bahwa beberapa di antaranya mungkin karena preferensi pengguna tetapi saya hanya pernah menggunakan bash dan saya tertarik untuk mendengar di mana shell lain mungkin berguna.
Juga, apakah ada dampak pada skrip shell yang ditulis pengguna saat berjalan di bawah satu shell atau yang lain atau itu hanya masalah mengubah shell di bagian atas file? Naluriku mengatakan itu tidak mudah.
jsh
(yang bukan shell java!), Yang tidak memiliki substitusi variabel seperti${VAR#foo}
dan${VAR%bar}
.tcsh
agak populer di kalangan pengguna UNIX yang mempelajari trik mereka sebelum ~ pertengahan 90-an (yang melihat pengenalan keduanyabash
danzsh
), terutama di antara paraC
pengembang UNIX + yang lebih tua , yang memulai kehidupan dengancsh
(pengingat, huruf dalamcsh
singkatanC
bahasa , yang merupakan inspirasi untuk perbedaannya dari cangkang gaya bourne). Lihat juga pemrograman Csh yang dianggap berbahaya , yang sering saya gunakan untuk tips tentang sihir POSIX yang mendalam (selain argumen anti-csh).Ada dua rasa dasar shell, sh (misalnya, bash) dan csh (misalnya, tcsh). Untuk penggunaan interaktif, sebagian besar tergantung pada apa yang Anda terbiasa. Saya telah menggunakan csh, dan kemudian tcsh, selama bertahun-tahun dan itu akan menyakitkan untuk beralih, hanya karena saya sudah terbiasa dengan itu. Saya telah menggunakan bash juga, dan saya tidak berpikir ada alasan kuat untuk beralih. Kecuali mungkin jika satu atau yang lain tidak tersedia pada mesin yang Anda gunakan secara teratur.
Untuk pemrograman, sintaksnya berbeda. Anda tidak bisa hanya mengganti shell, tetapi perlu mengubah sintaks skrip juga. Untuk skrip, Anda ingin menggunakan sh atau bash. Sintaksnya jauh lebih bisa menerima scripting, seperti yang dijelaskan di sini (terima kasih kepada Riccardo Murri untuk tautannya. Ini adalah panduan yang bagus untuk bash scripting.
Jika Anda belum memutuskan shell, dan Anda berharap untuk menulis beberapa skrip, saya akan menggunakan bash hanya untuk mengurangi jumlah hal yang perlu Anda pelajari.
sumber
Di masa lalu, ketika AT&T menemukan UNIX, ada Bourne Shell, yang ditulis oleh Steve Bourne. Itu cukup mendasar, dan tidak memiliki banyak alat yang kami terima begitu saja saat ini.
AT&T tidak benar-benar dalam bisnis UNIX, jadi pada saat ini OS yang sangat mendasar diadopsi agak oleh Berkelely, dan mereka membuat beberapa perubahan menjadi BSD UNIX. Di antara banyak perubahan, adalah shell baru, yang disebut csh, yang memiliki banyak perbaikan dibandingkan sh, termasuk kontrol pekerjaan penggunaan interaktif yang lebih baik dan sebagainya. Sayangnya, mereka memutuskan sintaks pemrograman sh mengisap dan membuat sendiri, (agak buruk) disalin dari gaya pengkodean C. (Kata-kata kasar klasik adalah http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Jadi sekarang ada dua sintaksis.
Kemudian, mereka melakukan perbaikan pada CSH menambahkan penyelesaian tab dan beberapa hal lainnya. Ini menjadi tcsh, dan jika Anda menggunakan CSH, ini mungkin yang Anda gunakan.
AT&T memutuskan itu tidak sepenuhnya keluar dari bisnis UNIX, dan mereka juga memolesnya. David Korn (pria baik) menciptakan shell Korn. Berdasarkan ide memperluas sintaksis Bourne shell, itu menambahkan banyak hal untuk kedua programmer dan penggunaan interaktif. Sebenarnya ada beberapa versi, dan Anda mungkin jarang melihat hal-hal seperti ksh88 dan ksh93, yang menunjukkan varian.
Kemudian datanglah FSF dan OS GNU. Mereka ingin membuat OS mereka sendiri yang kompatibel dengan UNIX bernama Hurd, dan menginginkan shell yang lebih baik untuk itu. Mereka memanggil bash, untuk Bourne Again SHell. Aturan POSIX datang hanya sekitar waktu ini, dan mereka ingin membuat para POSIX shell. Mereka melihat sekeliling, mengambil sintaks dari shell Bourne dan perbaikan dari shell Korn, ditambah mencuri dan memperluas fitur interaktif dari tcsh. Itu menjadi shell de facto di Linux, jadi itu sangat umum.
Ada juga zsh, ditulis menjadi shell 'ultimate'. Ini juga sangat umum di dunia Linux. Itu memperpanjang bash (dan diserbuki silang sedikit, beberapa hal baru kembali ke bash).
Jika saya memilih shell, saya akan memilih bash atau zsh. bash mungkin ada di beberapa tempat lebih banyak daripada zsh. zsh lebih kuat, tapi bash baik untukku. Shell Bourne nyata / bin / sh ada hanya karena alasan historis. bash memiliki hampir semua yang ditawarkan ksh dan lebih banyak lagi. Sintaksnya lebih bersih daripada csh atau tcsh, dan memiliki fitur yang lebih baik daripada salah satunya.
Untuk mengonversi skrip tergantung dari apa ke apa. Gaya shell Bourne (sh, ksh, bash, zsh) ke atau dari gaya csh (csh, tcsh) akan sulit. Beralih dari yang lama ke yang lebih baru (/ bin / sh => bash, / bin / ksh => zsh) akan lebih mudah daripada cara lainnya.
sumber
Dua cabang utama cangkang adalah turunan cangkang Bourne (sh, bash, ksh, ash, yash dan zsh) dan turunan csh (tcsh dan ... uhm ... tcsh).
Saya curiga (meskipun saya tidak memiliki angka aktual) bahwa bash adalah yang paling banyak digunakan, tampaknya shell default di sebagian besar linux
Sebagian besar hal yang ditulis dalam satu turunan shell bourne mungkin akan bekerja pada yang lain. Sebagian besar hal yang ditulis dalam shell Bourne mungkin perlu dimodifikasi untuk dijalankan di bawah csh atau tcsh.
Secara pribadi saya menggunakan ksh ketika saya mulai karena itulah yang ada di sistem yang saya gunakan. Saya terutama menggunakan bash sekarang.
sumber
Saya telah menggunakan banyak cangkang dari waktu ke waktu. Bukan sesuatu yang super canggih tetapi banyak sysadmin praktis dan hal-hal pemrograman yang membutuhkan penyesuaian yang cukup.
Saya pikir zsh memiliki lebih banyak opsi penyesuaian, setidaknya dulu, tetapi setelah menggunakannya selama beberapa tahun, saya sudah cukup dengan masalah stabilitas dan pengkodean karakter. Bash adalah rock solid, tidak pernah memiliki masalah serupa dan dipasang di mana-mana.
sumber