Hacker News new | ask | show | jobs
by hulitu 207 days ago
> Anything other than ”#!/usr/bin/env bash” is doomed to fail at some time.

if you have /usr/bin/env

2 comments

/usr/bin/env (and /bin/sh) are part of POSIX, that is why the above shebang is the recommended way to start a shell.
/bin/sh is NOT required by POSIX, they explicitly warn that it may not exist[1].

> Applications should note that the standard PATH to the shell cannot be assumed to be either /bin/sh or /usr/bin/sh, and should be determined by interrogation of the PATH returned by getconf PATH , ensuring that the returned pathname is an absolute pathname and not a shell built-in.

[1] https://pubs.opengroup.org/onlinepubs/9799919799/

I don't know if this is still a thing, but I distinctly remember when playing around with NixOS years ago that `env` was the only thing in /usr/bin, which I assumed was pretty much exactly for this reason.