On 05/11/12 17:58, Eitan Adler wrote:

This line is buggy:
please http://blog.eitanadler.com/2012/10/binbash-considered-harmful.html
for why.

I ideally the non-portable bashims get fixed but if not the shebang
line must be "/usr/bin/env bash" not /bin/bash.

While it is true that "/usr/bin/env bash" is more portable than "/bin/bash", I also don't like it as much.

If I run a "#!/bin/bash" script without bash installed I get:

  /bin/bash: bad interpreter: No such file or directory

If I try the same with "#!/usr/bin/env bash" I get:

  /bin/env: bad interpreter: No such file or directory

which is demonstrably untrue and far less helpful.

In the former case any mildly experienced Unix user will just sigh and run the script under bash manually. In the later case you have to be very experienced not to spend ages thinking you must be crazy or have found a kernel bug, or something.

Now, if the script were deeply embedded in some other tool where the user would not be able to intervene then I would consider the env trick, but even then I would probably use "#!/bin/sh" and have the script locate bash and re-exec itself.

It is, of course, the official Ccache maintainer's call which style is preferred, or even whether it's better to find and stamp out the errant bashism in the script, but my vote is for the simple /bin/bash option.

ccache mailing list

Reply via email to