La maggior parte del codice che scrivo è in PHP. Di recente ho iniziato a studiare gli script di shell. La maggior parte delle risorse e dei tutorial che ho incontrato sono specifici di Bash. Alcuni avvertono dei bashismi e altri no. Ho letto molto qui e Stack Overflow.
Ogni volta che una risposta usa basismi , qualcuno inevitabilmente commenterà per dire:
Non dovresti usare <inserire qui bashism>. Non è portatile.
Questo succede anche quando la domanda è stata taggata bash. Per me, è come dire a un programmatore di PHP che non dovrebbero usare il codice nuovo in PHP 5 perché non può essere usato con PHP 4. O dire a qualcuno che non dovrebbero scrivere qualcosa per Mac perché non può essere usato Su Windows.
Quando scrivo in PHP, scelgo un requisito minimo e scrivo un codice compatibile con il forward . Non mi preoccupo di renderlo compatibile con le versioni precedenti.
Se uso #!/bin/bash
come shebang, perché non dovrei usare i bashismi? Sto iniziando a ottenere l'impressione che alcune persone come per bash bashismi (gioco di parole) solo per il gusto di farlo.
Le persone usano spesso bash
e in modo shell
intercambiabile, probabilmente a causa del fatto che bash è la shell predefinita su molti sistemi. Quindi posso capire l'aggiunta di un commento per avvertire che il codice utilizza bashismi, ma non capisco l'implicazione che è sbagliato usarli.
Ovviamente, se scrivo una sceneggiatura esclusivamente per uso personale, posso scriverla nella lingua che desidero. Ma mi piacerebbe pensare che parte del codice che scrivo potesse essere utile ad altri.
Ho provato a cercare una risposta alla mia domanda prima di pubblicare. Ho trovato molte informazioni su come testare la portabilità, ma non sono riuscito a trovare nulla su quando è importante farlo.
Quindi, quando è importante scrivere script portatili?
Per esempio,
- quali tipi di script dovrebbero essere il più portatili possibile?
- quanto sono comuni i sistemi su cui non è installato Bash?
- se il sistema ha installato Bash, avrà anche la versione GNU di find e altre utilità?
bash
solo tag, qualcuno commenta "È bashismo e non portatile". Quando rispondo a una domanda taggata C
, non mi interessa se è portatile Java
o meno.
bash
funzionalità specifica e non portatile, proprio come vorrei sottolineare che un'estensione specifica GNU viene utilizzata per alcune utilità (anche se la domanda è stata etichettata come Linux). Non ho mai visto nessuno dire "questo è un bashismo e non dovresti mai usarlo".