Hacker News new | ask | show | jobs
by NekkoDroid 2 days ago
I really hate the `curl <url> | sh` specifically because if your connection drops at a specifically unlucky point in time you are left with a partially executed script which if you are unlucky enough may just have been executing `rm -r ~/.cache/<pkg>/download` but it stopped at `rm-r ~/`.

Is it likely? No. Can it happen? Yea.

Just make it `curl -o <file> <url> && sh <file>` and this entire problem is gone.

1 comments

Most scripts now put all the code into a shell function and call it in the last line of the script, so this bug can't happen.
Correct, and/or in addition, most nowadays prepend something like `set -euo pipefail` to the scripts in the line immediately after the shebang which results in stopping on errors, including things such as syntax errors stemming from e.g. incomplete installer transmission over wire.

(At least for bash scripts, I’m not sure whether these are POSIX syntax to be frank.)