4 ms·
Just fyi, you should use `#!/usr/bin/env bash` instead of `#!/bin/bash` or whatever because you can't assume the location of bash (but the location of `env` is
by ComputerGuru 2y ago
Just fyi, you should use `#!/usr/bin/env bash` instead of `#!/bin/bash` or whatever because you can't assume the location of bash (but the location of `env` is indeed portably fixed). e.g. FreeBSD (and macOS?) has bash at `/usr/local/bin/bash`
- zazaulola 2y agoI'm confirming. Often, when you run a script on more than just your own computer, bash is located in unexpected places. For me, for example: `/data/data/com.termux/files/usr/bin/bash` In such cases, scripts containing the absolute path to bash in shebang do not run correctly.
- saagarjha 2y agobash is /bin/bash on macOS, unless the user really likes bash, in which case it's probably /opt/homebrew/bin/bash or /opt/local/bin/bash
- mplanchard 2y agoIn any of those cases, using `/usr/bin/env bash` gets what the user probably wants
- saagarjha 2y agoYeah I'm just commenting on what the path for that would be
- pxc 2y agoI wouldn't say I particularly like bash, bash has seen a ton of improvements since Apple stopped updating the vendored version. Using that old bash which is frozen for non-technical reasons just seems stupid to me. If you don't want bash-specific features, you might as well use zsh or dash or whatever lives in /bin/sh. If you do want bash-specific features, you might as well take advantage of the latest and greatest. On that note, on my Macs, the bash I want is usually /opt/pkg/bin/bash or /run/current-system/sw/bin/bash :)
- massysett 2y agoThat assumes you care about portability. Not everybody does. Writing portable software is difficult, and doing it for shell scripts even more so. Blindly pursuing portability for its own sake is not worth it. Weigh the cost of portability against the odds that the software will ever run on different systems. For me personally it is never worth it to write my personal programs portably. This would require that I test them on different systems that I do not even use. Pointless.
- mplanchard 2y agoIt’s not so much a portability thing IMO as it is a utility thing. If I have a newer bash in my PATH than what is in /bin/bash, I want to use it.
- lillecarl 2y agoAnd NixOS has bash somewhere in the Nix store... :) Clarification: /usr/bin/env should be used for pretty much every shebang since it looks up the binary on $PATH.