Bash is proper programming language, though not necessarily modern nor ergonomic.
The problem is:
1. Bash is assumed to be everywhere, so people use it for maximum portability or bootstrapping.
2. It started as a 10-100 line "quick" script, but then grew into a monster and nobody wanted to take the hit to rewrite it in a modern programming language.
I've found when you enforce the same software best practice requirements regardless of language, people start choosing not-Bash since "they have to do it right anyway". Many devs see Bash as a shortcut to avoiding the extra work.