Saya ingin tahu mengapa orang ingin menjalankan bash, bukan zsh. Maksud saya zsh sepenuhnya kompatibel dengan bash. Jangan salah paham: Saya tidak suka bash atau apa pun. Saya benar-benar ingin tahu apakah ada keuntungan menggunakan zsh.
Jadi apa alasannya menggunakan bash over zsh?
Jawaban:
Ada dua alasan yang muncul:
Pertama - tersedia secara praktis di mana saja. Saya memiliki beberapa sistem Linux (CentOS 4.x dalam hal ini) yang tidak menginstal zsh. Demikian pula saya harus menyentuh sistem kuno seperti Solaris 2.6 dan ke atas, HP-UX 10 ke atas, dan versi AIX yang berderit. Oleh karena itu saya cukup banyak harus menggunakan bash pada komputer ini, yang saya lakukan karena saya menyentuh puluhan, jika tidak ratusan, masing-masing komputer selama sebulan, dan untuk mendapatkan konsistensi dalam antarmuka Anda, Anda akhirnya terjebak menggunakan standar.
Kedua - ini tersedia hampir di mana-mana. Ini berarti saya dapat menulis skrip bash shell dan memastikan 99% bahwa itu akan berfungsi ketika ditransfer ke tempat lain.
Ya, alasan-alasan ini pada dasarnya sama, tetapi alasan di baliknya berbeda.
sumber
Bash umumnya datang dengan setiap sistem, zsh tidak. Saya suka zsh, tetapi karena ini, saya menggunakan zsh untuk penggunaan interaktif, tetapi Bash untuk semua skrip saya .
Saya menemukan ini membuat semuanya lebih sederhana, bahkan ketika saya berbelanja apa pun bash yang kompatibel (setopt SH_WORD_SPLIT?), Saya masih mengalami perbedaan yang halus.
sumber
zsh tidak sepenuhnya kompatibel dengan bash. Ada berbagai perbedaan. Zsh yang lebih baru lebih kompatibel dengan bash (= ~ didukung, exec sekarang memiliki opsi bendera tambahan, dll) tetapi kompatibilitas penuh bukan tujuan, bahkan di bawah "meniru".
Misalnya, substring bash adalah $ {foo: offset: len} tetapi di zsh itu $ foo [start, end] dan itu hanya satu contoh sederhana.
zsh adalah shell yang dipengaruhi tcsh dan ksh yang melakukan banyak hal dengan caranya sendiri; Kompatibilitas POSIX secara eksplisit bukan tujuan, tetapi pengembang responsif terhadap tambalan yang menambahkan opsi / meniru perilaku yang membuat segalanya lebih dekat dengan POSIX. Tetapi ketika Anda mulai benar-benar memahami kekuatan shell, Anda mulai membuat skrip tulis saja, bahkan lebih dari bash.
bash adalah POSIX sh + ksh + pedanticism, dengan beberapa fitur sekarang disalin dari zsh. Juga memiliki skrip tulis-saja tetapi karena memiliki operator yang kurang kuat, Anda akhirnya tidak menggunakan keringkasan zsh dan hal-hal mungkin lebih mudah dibaca (kecuali untuk semua kutipan untuk menghindari perpecahan spasi putih, $ array bodoh ksh-style $ berarti lebih dulu -element-of-array, bukan semua-elemen-of-array, dll.)
Menulis skrip yang memanfaatkan sepenuhnya kekuatan shell tidak bijaksana, kecuali Anda berada di lingkungan yang dibatasi (mis., Menulis skrip sistem rc, di mana beberapa FSs mungkin tidak dipasang, dll). Sebagai ideal, gunakan Perl / Python / Ruby / apa pun untuk sesuatu yang cukup besar yang Anda butuhkan ekspresif tidak di Bourne sh, jika Anda ingin orang lain dapat mempertahankannya. Simpan barang-barang shell untuk hal-hal yang berkaitan dengan shell interaktif (pemrograman penyelesaian tab, dll).
Saya tidak akan menggunakan bash over zsh. Saya akan menggunakan bsh sh over zsh untuk skrip sederhana, atau beralih ke bahasa di mana array asosiatif memiliki operator yang layak (tidak seperti di zsh, di mana mereka, sekali lagi, 'ringkas'). Saya mungkin mengganti skrip sh ke bash jika saya membutuhkan satu fitur kecil untuk memperpanjang skrip yang sudah terbukti bekerja dan tidak punya waktu untuk menulis ulang sekarang.
sumber
Saran saya: jika Anda menginginkan portabilitas absolut, tulis menggunakan aturan shell Bourne, jangan repot-repot dengan ekstensi shell Korn. Seperti disebutkan, itu adalah beberapa "kotak besar" lama yang tidak memiliki cangkang GNU sama sekali.
Bash sudah melakukan "terlalu banyak". Saya punya teman di tempat kerja yang lebih suka zsh, tapi saya tidak tahu persis apa fungsinya.
Pokoknya, baik menulis untuk shell Bourne (atau "bourne lagi"), atau secara bergantian, jika Anda melakukan skrip khusus untuk sejumlah kecil kotak tertentu, lewati "shell hell" sepenuhnya, dan cukup tulis menggunakan perl atau python (atau apa pun juru bahasa lokal yang Anda instal adalah).
sumber
Selain alasan portabilitas yang diberikan di atas, yang lain mungkin bash masih menambahkan fitur.
Misalnya bash v4.x + diperkenalkan:
globbing rekursif:
autocd:
sumber
Omong kosong. Jika Anda tahu bahwa setiap sistem yang Anda pedulikan memiliki BASH maka itu adalah pernyataan yang sangat masuk akal. BASH memiliki banyak fitur berguna yang tidak dapat ditiru secara wajar di POSIX sh. Penggunaan fitur-fitur non-POSIX yang sembrono bukanlah ide yang bagus tetapi menggunakannya saat Anda benar-benar membutuhkannya.
Portabilitas tidak mutlak. Dapat diperdebatkan seberapa jauh Anda perlu menerimanya, sama seperti hal lainnya. Sebagai contoh, Fedora menggunakan perintah shell untuk membangun paket RPM dan pedoman pengemasan Fedora menyatakan bahwa karena semua paket harus dibuat secara bawaan di Fedora, boleh saja menggunakan semua fitur BASH. Meskipun secara teoritis distro lain tanpa BASH mungkin ingin menggunakan kembali RPM sumbernya, mereka membuat keputusan tentang portabilitas berdasarkan kepraktisan alih-alih mantra "SELALU UZE POSIX !! 1" Anda.
ZSH belum tertangkap sebagai shell default, hanya karena itu adalah ide-ide yang setengah matang.
sumber
Ngomong-ngomong, Anda telah diberitahu di sini berkali-kali yang
bash
dapat ditemukan secara praktis di mana-mana, jadi gunakan untuk menulis skrip portabel, yang salah .Cara yang tepat untuk menulis skrip unix portabel adalah menggunakan
sh
, yang ditemukan di setiap sistem * nix .Setiap shell lain kecuali
sh
hanya alat interaktif harian Anda.Ketika datang ke
bash
vszsh
-bash
dibundel dalam lebih*nixes
darizsh
, jadi inilah kelemahan menginstal perangkat lunak tambahan ke sistem - Anda harus mempertahankannya. Beberapa orang suka "fitur keren" zsh sehingga mereka suka membayar harga itu, beberapa tidak.sumber
sh
bash, ini memungkinkan mode kompatibilitas ketika dijalankan sebagaish
.Poin lain:
Banyak program menyediakan penyelesaian pesta yang keren secara default. Bagi saya itu alasan untuk tidak beralih.
[ditambahkan pada Jul 2013] Nah setelah beberapa tahun menggunakan zsh sejak komentar di atas, saya harus mengatakan penyelesaian tab (bahkan builtin satu, tanpa modifikasi modifikasi paret ketiga) sangat brilian dan sepertinya jauh melampaui yang ditawarkan oleh bash . :)
sumber