Should bash be expected to change in ways that break non-trivial amounts of existing scripts at some point in the (near/<5y) future? How much change has it gone trough in the last ten years compared to, say, python or perl?
2
bash
has been around since 1989, and its syntax is largely compatible with that of the much older Bourne shell, which was released in 1977. Huge swaths of core functionality in many operating systems (most Linux distros, OS X, and indeed most POSIX-compatible operating systems), and many real-world systems (make systems, automated tests, initialization scripts, etc.) depend on its functionality.
Bash isn’t going anywhere, because if it did break existing scripts, it would cause huge problems. To the contrary, Bash has gone out of its way to preserve backwards compatibility with every new syntax addition.
2
The syntax of bash is unlikely to change significantly. Changes to it could have catastrophic effects across unix systems (startup scripts not working after the upgrade).
One can see that things are progressing forward with bash, and various distributions are slowly updating code to remove backwards comparability with earlier versions of bash.
If you are upgrading a system and see that bash is upgrading, it may be necessary to test those ancient scripts to make sure everything is still running correctly. It probably will, but I wouldn’t want to be the one doing a “OMG Fix everything yesterday!” when something is doesn’t work right after trusting that everything will.
In theory, if people followed best practices for the bash scripts, it should work, but then again, please don’t take my word for it.
Perl and Python keep backwards compatibility within major version numbers. Something written for perl 5.001 (1995) still runs correctly in perl 5.16.1 (August 9, 2012). A script for perl 5 will need to run in compatibility mode with perl 6.
Python appears to follow a similar “nothing breaking within a major version”. Also give Python 2 or 3 a look for python backwards compatibility between major versions.
2