GNU Coreutils `time –version` and `/bin/true –version` work but `true –version` does not?
$ time --version time (GNU Time) UNKNOWN Copyright (C) 2018 Free Software Foundation, Inc. ... $ /bin/true --version true (GNU coreutils) 8.32 Copyright (C) 2020 Free Software Foundation, Inc. ... $ true --version $ echo 'nothing was printed on the previous line'
I’m using Ubuntu 22.04, GNU bash, version 5.1.16 (also tested with zsh 5.9).
time is a keyword (see
type time) and
time is not interpreted as such.
time makes Bash run an external executable which in your case is GNU
true is a builtin (see
type true). The fact you can use a backslash to suppress the
time keyword (or any keyword, e.g. try
if) probably misled you into thinking you can use a backslash to suppress a builtin. No,
true still runs the builtin, not the GNU
true. It’s quite evident with
:; it runs the
: builtin, not an external
: executable which most likely does not exist in your OS (compare
type -a : to
type -a true; or try
help true describes the builtin, it mentions no options.
truedecide which behavior?
It seems the builtin ignores all command line arguments, no matter what they are. GNU
true ignores all command line arguments, unless there is exactly one argument and the argument is
In Zsh the story is basically the same.