Kebanyakan kode yang saya tulis adalah dalam PHP. Saya baru-baru ini mulai belajar skrip shell. Sebagian besar sumber daya dan tutorial yang saya temui khusus untuk Bash. Beberapa memperingatkan tentang bashisme dan beberapa tidak. Saya sudah banyak membaca di sini dan Stack Overflow.
Setiap kali jawaban menggunakan bashism , seseorang pasti akan berkomentar untuk mengatakan:
Anda tidak boleh menggunakan <insert bashism here>. Ini tidak portabel.
Ini terjadi bahkan ketika pertanyaan itu ditandai bash. Bagi saya, itu seperti memberi tahu programmer PHP bahwa mereka tidak boleh menggunakan kode yang baru di PHP 5 karena tidak dapat digunakan dengan PHP 4. Atau memberi tahu seseorang bahwa mereka tidak boleh menulis sesuatu untuk Mac karena itu tidak dapat digunakan di Windows.
Ketika saya menulis dalam PHP, saya memilih persyaratan minimum dan saya menulis maju- kode yang kompatibel. Saya tidak khawatir membuatnya mundur -kompatibel.
Jika saya menggunakan #!/bin/bash
shebang, mengapa saya tidak menggunakan bashism? Saya mulai mendapatkan kesan bahwa beberapa orang hanya suka bash bashism (pun intended) hanya demi itu.
Orang sering menggunakan bash
dan secara shell
bergantian - mungkin karena fakta bahwa bash adalah shell default pada banyak sistem. Jadi saya bisa mengerti menambahkan komentar untuk memperingatkan bahwa kode menggunakan bashism, tapi saya tidak mengerti implikasi bahwa salah menggunakannya.
Jelas, jika saya menulis naskah hanya untuk penggunaan pribadi, saya dapat menulisnya dalam bahasa apa pun yang saya inginkan. Tetapi saya ingin berpikir bahwa beberapa kode yang saya tulis dapat bermanfaat bagi orang lain.
Saya mencoba mencari jawaban untuk pertanyaan saya sebelum memposting. Saya menemukan banyak informasi tentang cara menguji portabilitas, tetapi tidak dapat menemukan apa pun tentang saat penting untuk melakukannya.
Jadi, kapan penting untuk menulis skrip portabel?
Sebagai contoh,
- jenis skrip apa yang harus se portable mungkin?
- seberapa umum sistem yang tidak memiliki Bash diinstal?
- jika sistem telah menginstal Bash, akankah ia juga memiliki versi pencarian dan utilitas lain GNU ?
bash
tag sendiri, seseorang berkomentar "Ini bashism dan tidak portabel". Ketika saya menjawab pertanyaan yang ditandai C
, saya tidak peduli apakah itu portabel Java
atau tidak.
bash
fitur khusus, dan bukan portabel, sama seperti saya akan menunjukkan bahwa ekstensi spesifik GNU sedang digunakan untuk beberapa utilitas (meskipun pertanyaannya ditandai sebagai Linux). Saya belum pernah melihat orang mengatakan "ini adalah bashism dan Anda tidak boleh menggunakannya".