O problema
É comum que os alunos tenham problemas de portabilidade com seus scripts quando fazem seu desenvolvimento inicial em sistemas que usam o bash, por exemplo, como / bin / sh. Embora o bash suporte todas as funcionalidades no padrão POSIX, ele também suporta uma ampla gama de funcionalidades estendidas que não são definidas pelo POSIX. Quando um script é escrito para usar tais 'bashisms', não é garantido que ele seja executado corretamente quando o / bin / sh for algum outro shell compatível com POSIX. Em nice.harvard.edu, que é um sistema Ubuntu, o / bin / sh é dash, um shell que roda muito mais rápido que o bash, mas não suporta funcionalidade além daquela especificada pelo padrão POSIX. Alunos que usaram 'bashisms' em seus scripts descobrem, freqüentemente no último minuto, que seus scripts não serão executados sob / bin / sh em nice.
A solução
Aqui estão algumas dicas para ajudar você a evitar esses problemas:
- sempre desenvolva scripts em nice com / bin / sh se possível
- instale um shell POSIX estrito (como traço) em seu sistema pessoal para fins de desenvolvimento
- use apenas a funcionalidade especificada aqui quando desenvolvimento de scripts de shell
- veja este documento para obter dicas sobre Reconhecendo e substituindo "bashisms"
- veja a documentação completa para autoconf ('info autoconf.info'), que tem um bom seção sobre Programação 'Shell Portátil'
Consulte este para obter mais informações.