News for hackers. Stuff that matters.
Re:Shell Script Best Practices, from a decade of scripting t... by ndsipa_pomu on Thursday October 27, 2022 @05:26AM (#33355212)
The hashbang already specifies the shell, so also having it in the extension seems unnecessary. I don't like using '.sh' as an extension as it differs from other OS commands and I can't think where it's actually helpful.
Re:Shell Script Best Practices, from a decade of scripting t... by Beltalowda on Thursday October 27, 2022 @05:40AM (#33355302)
If you download a script then running "sh script.sh" is a lot quicker and easier than a chmod followed by ./script.sh. You can of course also type "bash script.sh", but I don't always have it installed on every system, and the .bash extension just clarifies it.

For things in my PATH I drop any suffixes like that.

Re:Shell Script Best Practices, from a decade of scripting t... by ndsipa_pomu on Thursday October 27, 2022 @06:20AM (#33355521)
I see your point, but you can just as easily run "sh script" although that does imply that you already know that it's a shell script (obviously you wouldn't just run something from the internet without checking it first).
Re:Shell Script Best Practices, from a decade of scripting t... by jraph on Thursday October 27, 2022 @06:40AM (#33355654)
> obviously you wouldn't just run something from the internet without checking it first

This died a long time ago with the pervasive use of NPM and PIP. Most developers probably run a lot of random unchecked shit all the time with local user privilege today without a blink.

Somehow people are ready for all this, but are still afraid to run a random shell script from the internet.

Re:Shell Script Best Practices, from a decade of scripting t... by ndsipa_pomu on Thursday October 27, 2022 @06:55AM (#33355773)
It's also fairly common to use a docker container that someone else built without having a look at it
Re:Shell Script Best Practices, from a decade of scripting t... by hdjjhhvvhga on Thursday October 27, 2022 @08:49AM (#33356702)
I don't know. I do that a lot on test servers when tinkering with new stuff but at work I'm very careful what I insert into my employer's infrastructure. If someone breaks in using a hole I should have taken care of, that's already bad. But if invite bad guys by installing a C&C for them, that's superbad.
Re:Shell Script Best Practices, from a decade of scripting t... by krageon on Thursday October 27, 2022 @07:00AM (#33355800)
If you're committed to being an idiot no amount of rules of thumb will save you. Not understanding what you use is one facet of being committed to that.
Re:Shell Script Best Practices, from a decade of scripting t... by jraph on Thursday October 27, 2022 @07:57AM (#33356247)
But people don't live in a vacuum. They live in an ecosystem, are subjected to it and contribute to it.

If I contribute to Nextcloud or write an app for it, I need to run npm. If I want to run PeerTube, I need to run npm. They both pull a shitload of dependencies I can't possibly review.

I personally avoid building anything using NPM and advocate for fewer / no dependencies, or for using dependencies packaged by reputable entities like Debian, but what can I do? I can't build everything myself.

Am I committed to being an idiot?

Re:Shell Script Best Practices, from a decade of scripting t... by kwertzzz on Thursday October 27, 2022 @08:05AM (#33356315)
> This died a long time ago with the pervasive use of NPM and PIP and the likes.

When a malicious package is found on NPM or PIP, it will get removed. However, it is quite unlikely that a website will be taken town for a malicious script (or only after a long time).

I really doubt that most readers of HN would run a random script unless it comes from a source they trust (trusted enough to least to remove a malicious script in a timely fashion).

Re:Shell Script Best Practices, from a decade of scripting t... by Beltalowda on Thursday October 27, 2022 @07:03AM (#33355822)
The .sh extension told me it's a shell script of some kind.

I don't check everything I download from the internet; I don't think anyone does. It depends on what it is, where I'm getting it from, where I'm running it, etc. There are certainly some things I will review carefully, but other things I give just a quick check to see it's not in complete shambles, and others I barely check at all. I typically run the latest Vim from master, do I check every patch to see if after 30 years Bram finally sneaked in a crypto miner or password stealer? Do the people who package Vim for the Linux distros?

Re:Shell Script Best Practices, from a decade of scripting t... by ndsipa_pomu on Thursday October 27, 2022 @07:30AM (#33356031)
There's a difference between trusting well known software such as vim (especially when packaged by a distro) and trusting shell scripts from essentially anyone. If it's a well known resource, then I'd likely trust the script without checking (e.g. adding a docker repo to Ubuntu), but otherwise I'm going to give it a quick eyeball.

I would tend to agree that scripts for downloading from the internet should have a '.sh' extension to make it clear that it's a script as opposed to a binary.

Re:Shell Script Best Practices, from a decade of scripting t... by Beltalowda on Thursday October 27, 2022 @07:48AM (#33356150)
Indeed; that was my point exactly. People complain about things like "curl https://sh.rustup.rs | sh" from the Rust homepage, but it's essentially the same as trusting "cd vim && ./configure && make && make install" (plus, if I would hide anything I'd do it in the probably quite large binary that script downloads, which is much harder to audit).