top | item 45989092

(no title)

Crestwave | 3 months ago

`#!/usr/bin/env bash` is the most portable form for executing it from $PATH

discuss

order

Ferret7446|3 months ago

I raise you a https://www.felesatra.moe/blog/2021/07/03/portable-bash-sheb...

Pedantic, but "#!" and "portable" don't belong in the same sentence

Crestwave|3 months ago

The script you posted is only portable in theory and not in practice. Executing it while using a non-POSIX shell like Elvish (even without having it as a default shell) makes it immediately fail.

Meanwhile, `#!/usr/bin/env` is completely portable in the practical sense. Even systems with non-standard paths like NixOS, Termux and GoboLinux patch in support for it specifically.

hamandcheese|3 months ago

Is this meaningfully more portable than #!bash though?

tombert|3 months ago

In a sibling thread someone pointed out that #!bash doesn't actually work if you're calling it from bash, and appears to only work with zsh.

I just tried it and they were absolutely right, so `#!/usr/bin/env bash` is definitely more portable in that it consistently works.

saurik|3 months ago

This mechanism doesn't do a PATH lookup: #!bash would only work if bash was located in your current working directory.