Há checkbashisms . No Debian, ele é enviado como parte das ferramentas de manutenção de pacotes .
Teste seus scripts sob o controle e a sofisticação . Ambos têm algumas construções não POSIX, mas se o seu script funcionar em ambos, provavelmente funcionará na maioria dos lugares. (Com a ressalva de que é difícil testar scripts shell típicos, eles tendem a ter muitos casos de canto.)
Se você pretende que seus scripts sejam portáteis para plataformas Linux incorporadas, teste-os com o BusyBox . Observe que o BusyBox pode ser mais ou menos restrito, dependendo do tamanho de um sistema incorporado desejado; é bastante normal ter scripts que dependem de um recurso que algumas instalações do BusyBox não possuem.
Observe que a não portabilidade não vem apenas do shell, mas também de utilitários externos. O OpenBSD e o Solaris tendem a ter utilitários com recursos POSIX e pouco mais, por isso são bons para testar a portabilidade.
Você deve consultar a especificação POSIX e outros recursos mencionados neste tópico (especialmente o manual do autoconf ); mas isso é documentação, não ajuda se você usar um recurso acidentalmente.