this post was submitted on 22 Mar 2024
103 points (88.7% liked)

Linux

48338 readers
475 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] deadbeef79000@lemmy.nz 63 points 8 months ago* (last edited 8 months ago) (9 children)

rm -rf ${var}/ is a disaster waiting to happen.

Always do rm -rf "${var:?}/" so that the script aborts if the variable is empty. Or better yet rm -rf "./${var:?}/".

Edited to add quotes. Always quote a path: it might have spaces in it, without quotes that will become multiple paths! Which would also have avoided the particular bug in question.

[–] mumblerfish@lemmy.world 18 points 8 months ago (3 children)

Is there not also a way to disallow empty variables in the script, I think it is set -u? Then you don't have to keep thinking "should I add a :? here because if empty it may lead to disaster" all the time. Might be even safer.

[–] deadbeef79000@lemmy.nz 7 points 8 months ago* (last edited 8 months ago)

Yes! But -u is for undefined variables. It won't stop a defined variable with an empty value. E.g foo="".

Also ? and :? have the advantage of telling you right then and there where the variable use is that it must be defined or not empty... having to trek back to (likely) the top of the script to check is easily forgotten.

load more comments (2 replies)
load more comments (7 replies)