Come scoprire se uno script di shell è scritto in bash o sh


8

Come posso sapere se uno script è scritto in basho sh?

La prima riga dello script non è utile qui, poiché su Linux, gli script bash hanno questa riga: #!bin/sh

In realtà, ci sono molte distribuzioni in cui /bin/shè bash (forse /bin/shè un collegamento a /bin/bashquelle distribuzioni) e non Bourne Shell. Quindi, se provo a eseguire uno script scritto in bash, ad esempio in FreeBSD, il risultato non è definito, poiché /bin/shin FreeBSD è Bourne Shell e non bash.

Esiste un modo semplice per identificare se uno script è bash o sh?

Ci sono alcune cose distintive nella sintassi?


3
Vedi Bashisms sul Wiki di Greg ...
Jasonwryan il

Risposte:


15

In realtà la faccenda linee significa qualcosa come alcune distribuzioni come Debian non utilizzare bashper /bin/shma dash.

La soluzione più semplice per determinare se uno script di shell è bash è usare checkbashism- vedere man checkbashismsper i dettagli.

checkbashismsdovrebbe essere impacchettato da diverse distribuzioni, per Debian è nel devscriptspacchetto - Fedora in devscripts-minimal(era una volta rpmdevtools) e OpenSuSe inrpmlint-mini

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.