Existem checkbashisms . No Debian, ele é enviado como parte das ferramentas do mantenedor de pacotes .
Teste seus scripts em traço e posh . Ambos têm algumas construções não POSIX, mas se o seu script funcionar em ambos, é provável que funcione na maioria dos locais. (Com a ressalva de que é difícil testar scripts típicos de shell, pois eles tendem a ter muitos casos de canto.)
Se você pretende que seus scripts sejam portáveis para plataformas Linux embarcadas, teste-os com o BusyBox . Note que o BusyBox pode ser mais ou menos restrito, dependendo de quão pequeno seja um sistema embarcado que você queira; é normal ter scripts que dependam de um recurso que algumas instalações do BusyBox não possuem.
Note que a não-portabilidade não vem apenas do shell, ela também vem de utilitários externos. O OpenBSD e Solaris tendem a ter utilitários com recursos POSIX e não muito mais, então eles são bons para testar a portabilidade.
Você deve consultar a especificação POSIX e outros recursos mencionados em este tópico (especialmente o manual autoconf ); mas isso é documentação, não ajuda se você usar um recurso acidentalmente.