true and false (commands)

(Redirected from True (Unix))

true and false are shell commands that exit immediately with exit status 0 or 1, respectively. As a script sets its process exit status to the value of the last command it runs, these commands can be used to set the exit status of a script run. All Unix shells interpret an exit status of zero as success and non-zero (usually) as failure, so true sets success and false sets failure.[Note 1]

true
Initial releaseJanuary 1979; 47 years ago (1979-01)
Operating systemUnix and Unix-like
PlatformCross-platform
TypeCommand

The commands are available in Unix-like operating systems.

The commands are usually employed in conditional statements and loops of shell scripts. For example, the following script repeatedly executes echo hello until interrupted:

while true
do
  echo hello
done

The commands can be used to ignore the success or failure of a sequence of other commands, as in the example:

make  && false

Setting a user's login shell to false, in /etc/passwd, effectively denies them access to an interactive shell, but their account may still be valid for other services, such as FTP. (Although /sbin/nologin, if available, may be more fitting for this purpose, as it prints a notification before terminating the session.)

The programs accept no command-line arguments except that the GNU version accepts the typical --help and --version options.

Null command

edit

The true command is sometimes substituted with the very similar null command,[1] written as a single colon (:). The null command is built into the shell, and may therefore be more efficient if true is an external program (true is usually a shell built in function). We can rewrite the upper example using : instead of true:

while :
do
  echo hello
done

The null command may take parameters, which are ignored. It is also used as a no-op dummy command for side-effects such as assigning default values to shell variables through the ${parameter:=word} parameter expansion form.[2] For example, from bashbug, the bug-reporting script for Bash:

 : ${TMPDIR:=/tmp}
 : ${EDITOR=$DEFEDITOR}
 : ${USER=${LOGNAME-`whoami`}}

Null smileys

edit

Either true or : can be used as a replacement for cat /dev/null, so there are 3 "null smileys":

:> - create a file or empty it if it already exists;
:>> - create a file if it doesn't exist, unlike touch it does not change the timestamp of existing file;
:| - can be used instead of < /dev/null

Such usage is similar to the IEFBR14's standard usage.

See also

edit

Notes

edit
  1. These are distinct from the truth values of classical logic and most general purpose programming languages: true (1 or T) and false (0 or ⊥). Note that a built-in true sets the exit status, while the program true returns it, with the same effect.

References

edit
  1. "Colon", The Open group base specifications, issue 7, IEEE std 1003.1-2008, archived from the original on 2014-04-27, retrieved 2011-08-04
  2. Cooper, Mendel (April 2011), "Null command", Advanced Bash-scripting guide, 6.3, The Linux documentation project, archived from the original on 2019-06-03, retrieved 2011-08-04
edit

Manual pages

edit