Seperti yang dinyatakan, bash
biasanya tersedia di instalasi default untuk banyak distro. Skrip Anda tidak akan mencapai basis pengguna terhebat dengan mengandalkan zsh
.
Sebuah pertanyaan penting untuk dijawab sebelum mendesain skrip Anda adalah " Mengapa penting skrip shell mana yang dieksekusi? "
Shell yang berbeda menggunakan sintaks yang berbeda atau menawarkan fungsi shell tambahan yang mungkin tidak didukung oleh shell lain. Untuk menulis skrip untuk "dunia pengguna akhir linux umum," tentukan apakah skrip Anda menggunakan fungsi sintaks atau shell yang bergantung pada lingkungan shell tertentu.
Misalnya, bash
shell mendukung ekspansi tertentu yang tidak didukung oleh dash
, Bourne shell, atau apa pun yang /bin/sh
mengarah pada sistem pengguna.
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
Coba jalankan echo {1..10}
dengan /bin/sh
dibandingkan dengan /bin/bash
dan Anda akan mendapatkan hasil yang sangat berbeda.
Hal yang sama berlaku untuk zsh
yang, sementara mendukung sebagian besar bash
sintaks, menawarkan ekspansi tambahan dan sintaksis yang tidak didukung oleh bash
shell. Lihat tabel ini membandingkan kerang untuk contoh spesifik.
Anda dapat memperluas basis pengguna potensial Anda di luar bash
dengan mematuhi skrip yang berfungsi saat dipanggil dengan #!/bin/sh -u
. Namun, ini menimbulkan pertanyaan penting lain untuk ditanyakan: " Apa yang dikorbankan sebagai ganti portabilitas yang lebih besar? "
Tentukan apakah perbedaan yang berkaitan dengan masalah keamanan, fungsionalitas, efisiensi, atau apa pun yang Anda rasa merupakan prioritas untuk skrip Anda akan sepadan dengan pengorbanannya. Anda mungkin tidak ingin penggunaan skrip yang tersebar luas dengan kerentanan keamanan yang diketahui hanya karena ia bekerja di lebih banyak lingkungan.
Begitu banyak skrip ditulis untuk bash
mendukung skrip ini digunakan sebagai kriteria ketika membandingkan shell perintah . Lebih banyak orang akan dapat menjalankan skrip Anda daripada jika bergantung pada zsh
atau sintaks lain yang eksklusif untuk lingkungan shell.
Juga, ingatlah bahwa Anda pada akhirnya tidak memiliki kendali atas bagaimana pengguna mengeksekusi skrip (juga berguna untuk debugging skrip dalam shell yang berbeda ):
Ingat bahwa jika Anda menggunakan shell untuk membaca skrip shell ("sh scriptname"), alih-alih mengeksekusi secara langsung ("./scriptname"), shell akan memperlakukan semua komentar di awal skrip shell sebagai komentar. Secara khusus, komentar yang menentukan penerjemah yang akan digunakan ketika mengeksekusi skrip ("#! / Bin / sh -u") akan diabaikan, karena semua opsi yang tercantum di samping penerjemah itu.
Jadi, hal terbaik yang dapat Anda lakukan tentang hal ini adalah membuat skrip Anda portabel, asalkan tidak ada pengorbanan besar untuk bagaimana fungsinya.
Anda mungkin juga melihat konvensi pengkodean Bash - Stack Overflow .
zsh
mungkin populer sementara di orang lain (sektor perbankan) itu hampir tidak pernah terjadi. Saya pikir Anda harus memberikan lebih banyak info jika Anda memerlukan saran yang tepat untuk yang satu ini.