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
timeis a shell command
It’s better we just use one of them in one shell script. This answer says bash
time is more precise than GNU
getusage() has better microsecond resolution than
times() in each code.
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
bash is indeed GNU bash.