Why is #!/usr/bin/env bash superior to #!/bin/bash?
bash, shebang
Solution
`#!/usr/bin/env` searches `PATH` for `bash`, and `bash` is not always in `/bin`, particularly on non-Linux systems. For example, on my OpenBSD system, it's in `/usr/local/bin`, since it was installed as an optional package.
If you are absolutely sure `bash` is in `/bin` and will always be, there's no harm in putting it directly in your shebang—but I'd recommend against it because scripts and programs all have lives beyond what we initially believe they will have.
Problem
I've seen in a number of places, including recommendations on this site (What is the preferred Bash shebang?), to use `#!/usr/bin/env bash` in preference to `#!/bin/bash`. I've even seen one enterprising individual suggest using `#!/bin/bash` was wrong and bash functionality would be lost by doing so. All that said, I use bash in a tightly controlled test environment where every drive in circulation is essentially a clone of a single master drive. I understand the portability argument, though it is not necessarily applicable in my case. Is there any other reason to prefer `#!/usr/bin/env bash`over the alternatives and, assuming portability was a concern, is there any reason using it could break functionality?