systemd-detect-fash
detects execution in a fascist environment. It identifies the fascist technology and can distinguish full machine fascism from installed fashware.systemd-detect-fash
exits with a return value of 0 (success) if a fascism technology is detected, and non-zero (error) otherwise.
Do you have any examples of that scenario? I can’t think of any, and from the top of my head it doesn’t make any sense to mix exit codes with bool returns.
Yes, it is used consistently in
GNU Coreutils
: https://www.gnu.org/software/coreutils/manual/coreutils.html#Conditionsfalse: do nothing, unsuccessfully
(returns 1)true: do nothing, successfully
(returns 0)test: check file types and compare values
is documented as “returns a status of 0 (true) or 1 (false)”To be pedantic: there is no such thing as a boolean value. It’s all just bytes and larger numbers behind an abstraction that allows a higher-level programming language to implement Boolean algebra by interpreting numbers a certain way. One such abstraction is the POSIX convention of treating a return code of zero as success and everything else as a failure. This consequently defines how Boolean algebra is implemented in POSIX-compliant shells:
if
statement tests the return code of the command specified in the header, then executes thethen
branch if the return code is zero, theelse
branch otherwise.while
loop similarly tests the command in the head and executes the body if its return code is zero.&&
and||
operators treat zero return values as true and nonzero return values as false. Go try it out.true
andfalse
commands are just programs that immediately return 0 and 1 respectively.If you start treating nonzero return codes like a success value with meaning, the only thing you’ll achieve is that your scripts won’t be compatible with the shell.
stdout
exists. Use it./usr/bin/true and /usr/bin/false come to mind.
Then there’s /usr/bin/test, or more commonly known as
[
.How about
function fn { return 1; }; fn
?POSIX-like shells consider that a failure, doing that on Bash with
set -e
or on Zsh withsetopt err_exit
will close the shell.Should I compile a list of examples with common utility programs like
mkdir
, or should I investigate whether 0-is-success also applies to PowerShell-run programs on Windows (idk for sure)?Thanks, I didn’t know they work like that.
I was thinking more along the line of the return 1 example.