GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare la conformità a Posix degli script della shell?

Considerando che POSIX è la cosa più vicina a uno standard comune tra tutti gli unice, mi interessa sapere se esiste una shell che lo supporti esclusivamente. Sebbene la maggior parte delle shell moderne fornisca supporto per POSIX (ed eseguirà script compatibili con POSIX senza alcun problema), non fanno un buon lavoro nel sottolineare le funzionalità non conformi.

Esiste una shell che implementa solo POSIX e POSIX, in modo tale da generare un errore per qualsiasi funzionalità non conforme?

MODIFICA Voglio chiarire che non sto chiedendo suggerimenti generali per la scrittura di script di shell portatili. La questione correlata menzionata nei commenti ha già coperto questo. Ho pensato a questa domanda quando ho scoperto che bash ha un --posix opzione ma solo per scoprire che influisce solo su alcuni comportamenti di inizializzazione che non è esattamente quello che sto cercando.

Risposta accettata:

Sfortunatamente, "portatile" è solitamente un requisito più forte di "conforme a POSIX" per gli script di shell. Cioè, scrivere qualcosa che funziona su qualsiasi shell POSIX non è troppo difficile, ma farlo funzionare su qualsiasi shell del mondo reale è più difficile.

Puoi iniziare installando ogni shell nel tuo gestore di pacchetti, in particolare posh di debian suona come quello che vuoi (Shell ordinario conforme alle norme). La politica di Debian è POSIX con alcune eccezioni (echo -n specificato, local …).

Oltre a ciò, tuttavia, il test deve coprire alcune shell (soprattutto /bin/sh) su una gamma di piattaforme. Provo su Solaris (/bin/sh e xpg4/sh) e BSD. AIX e HP-UX sono molto compatibili e non causano problemi. bash è un piccolo mondo a sé stante.

Consiglierei la guida Autoconf alla shell portatile, che è assolutamente geniale e fa risparmiare molto tempo. Grandi pezzi di esso sono obsoleti, ma va bene; salta semplicemente TruUnix e Ultrix e così via se non ti interessa!


Linux
  1. Come utilizzare gli input negli script della shell

  2. Esistono convenzioni di denominazione per le variabili negli script della shell?

  3. Cosa sono gli script di shell? Come creare script di shell?

  4. Come creare un pacchetto di test Travis CI per Linux, OS X, Windows?

  5. In che modo Linux gestisce gli script di shell?

Come creare script di shell

Script di shell per principianti - Come scrivere script Bash in Linux

Come eliminare i privilegi di root negli script della shell?

Come utilizzare if-else negli script della shell?

Comprendere il ciclo for negli script della shell

Come leggere gli argomenti della riga di comando negli script della shell?