5 ms·
> * #!/bin/bash instead of #!/usr/bin/env bash Except that'll pick up an old (2006!) (unsupported, I'm guessing) version of bash (3.2.57) on my macbook rather
by zimpenfish 2y ago
> * #!/bin/bash instead of #!/usr/bin/env bash
Except that'll pick up an old (2006!) (unsupported, I'm guessing) version of bash (3.2.57) on my macbook rather than the useful version (5.2.26) installed by homebrew.
> -z instead of actually checking how many arguments you got
I think that's fine here, though? It's specifically wanting the first argument to be a non-empty string to be interpolated into a filename later. Allowing the user to pass an empty string for a name that has to be non-empty is nonsense in this situation.
> You're seriously grepping shell scripts to determine what things you should install?
How would you arrange it? You have a `prepare_X.sh` script which may need to activate a specific Java SDK (some of them don't) for the test in question and obviously that needs to be installed before the prepare script can be run. I suppose you could centralise it into a JSON file and extract it using something like `jq` but then you lose the "drop the files into the directory to be picked up" convenience (and probably get merge conflicts when two people add their own information to the same file...)
- ndsipa_pomu 2y ago> Except that'll pick up an old (2006!) (unsupported, I'm guessing) version of bash (3.2.57) on my macbook rather than the useful version (5.2.26) installed by homebrew. Could you change that by amending your $PATH so that you're preferred version is chosen ahead of the default?
- zimpenfish 2y ago> Could you change that by amending your $PATH I think the `#!/bin/bash` will always invoke that direct file without searching your $PATH. People say you can do `#!bash` to do a $PATH search but I've just tried that on macOS 15 and an Arch box running a 6.10.3 kernel and neither worked.
- ndsipa_pomu 2y agoI think I misread the original recommendation as being the other way round i.e. to use #!/usr/bin/env bash instead of #!/bin/bash. That's why env is generally preferred as it finds the appropriate bash for the system.
- halostatue 2y agoThe 1brc shell script uses `#!/bin/bash` instead of `#!/usr/bin/env bash`. Using `#!/usr/bin/env bash` is the only safe way to pick up a `bash` that’s in your $PATH before `/usr/bin`. (You could do `#! bash`, but that way lies madness.)
- yencabulator 2y agoMadness is #!/usr/bin/env
- stouset 2y agoThe GP is pointing out [bad bash, good bash] and not [good bash, bad bash]. It was unclear to me at first as well. You two are in violent agreement.
- lolinder 2y agoNo, they're not. The script they're critiquing uses #!/bin/bash, so they have to have been saying that #!/usr/bin/env bash is better.
- pxc 2y agoThey're definitely both critiquing the script in the OP for the same thing in the same way. They're in agreement with each other, not with the script in TFA
- lolinder 2y agoOh, I also got confused! You're right, this is just a confusing subthread.
- zimpenfish 2y ago> They're in agreement with each other Oh. Oh! This is a confusing thread. Apologies all!