Aqui está um código que faz algo diferente no POSIX sh e Bash:
hello &> world
Se isso é "inválido" para você, não sei.
No Bash, redireciona a saída padrão e erro padrão de hello no arquivo world . No POSIX sh , ele executa hello no segundo plano e, em seguida, faz um redirecionamento vazio para world , truncando-o (isto é, é tratado como & > ).
Existem muitos outros casos em que as extensões Bash farão as suas coisas quando executadas em bash e terão efeitos diferentes em um POSIX sh puro. Por exemplo, expansão de chaves é outra, e ela também funciona da mesma maneira em Bash Modo POSIX e não.
No que diz respeito aos erros de sintaxe estática, o Bash tem ambas as palavras reservadas (como [[ e time ) não especificadas pelo POSIX, tal que [[ x é código shell POSIX válido, mas um erro de sintaxe Bash e um histórico de vários erros de incompatibilidade POSIX que podem resultar em erros de sintaxe, como o desta pergunta :
x=$(cat <<'EOF'
'
EOF
)
bash: line 2: unexpected EOF while looking for matching '''
bash: line 5: syntax error: unexpected end of file
Apenas erros de sintaxe é uma definição bastante perigosa de "inválido" para qualquer circunstância em que seja importante, mas aí está.