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?
#!/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.