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!