Most of the problems you&#x27;re describing with bash are symptomatic of larger problems:<p>&gt; The problem with bash is if you have different operating systems spread around, like CentOS 5, 6, 7 in our case, you wind up with a whole bunch of conditions figuring out what to do for specific OS versions.<p>This is a very poor approach to this problem in this situation. You&#x27;re supporting 3 systems. It&#x27;s not unreasonable to maintain 3 branches for 3 branches of the code, and with tools like `git` it&#x27;s easy to backport features when it&#x27;s possible without code change. This also gives you better measurement of the cost of maintaining support for legacy systems so you know when it&#x27;s time to pay the cost of upgrading. And when you do upgrade, you simply stop patching the CentOS 5 branch, and you&#x27;re not left with a bunch of if statements in your active codebase testing for a system that you no longer care about.<p>SaltStack might do better when targeting, for example, many many different Linux distros. But even then, it only solves a 99% use case, and the tools are opaque enough that fixing the 1% may take just as much time as writing more portable bash.<p>&gt; There&#x27;s also the non-DRYness of &quot;a whole bunch of bash scripts.&quot; You could maybe figure out some sort of include system to avoid repetition, but it&#x27;s bash... it won&#x27;t be pretty.<p>It&#x27;s really not that complicated or bad. `source` is typically all you need.<p>There&#x27;s also a larger antipattern here, which is that if your configuration is so complicated that you&#x27;re feeling pain, you&#x27;re probably not curating your dependencies very well. Configuration isn&#x27;t the worst way in which you&#x27;re going to feel this pain: if you&#x27;re letting so many dependencies into your system that you&#x27;re having trouble installing them all, you&#x27;re almost certainly installing a lot of bad libraries and you&#x27;re going to find that you also have trouble implementing features using libraries that are poorly-designed. I&#x27;m definitely <i>not</i> espousing a blanket fear of NIH code, but if you don&#x27;t take care on which dependencies you decide to include, you&#x27;re going to end up with a lot of problems.