time
is a common shell utility to measure the elapsed time. I occasionally found someone use /usr/bin/time
instead of time
and sometimes /usr/bin/time
doesn’t exist. I search for this topic a bit and think it’s subtler that I initially expected.
$ type -a time
type -a time
time is a shell keyword
time is /usr/bin/time
$ time --version
time --version
bash: --version: command not found
$ time --version
zsh: command not found: --version
--version 0.00s user 0.00s system 0% cpu 0.019 total
$ /usr/bin/time --version
GNU time 1.7
I run this on my ubuntu in wsl and a server running debian. However, for a fresh image, GNU time may be not installed yet.
$ type -a time
time is a shell keyword
$ /usr/bin/time
-bash: /usr/bin/time: No such file or directory
Therefore, the quick answer to the question in the title is
time
is a shell commandtime
at/usr/bin/time
isGNU time
It’s better we just use one of them in one shell script. This answer says bash time
is more precise than GNU time
since getusage()
has better microsecond resolution than times()
in each code.
p.s.1
Technically, bash time
is a command/keyword but not a builtin, though people tend to call it a shell builtin.
$ builtin time
builtin time
bash: builtin: time: not a shell builtin
$ builtin cd
builtin cd
p.s.2
bash
is indeed GNU bash.