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.
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.
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 yetrm -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.
In this case the issue was that a change between kde5 and kde6 let to the variable being defined as
somepath /
(notice the space).And that’s why you also surround it with double quotes.
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.set -euo pipefail
at the top of every script makes stuff a lot safer. Explanation here.