True and false (commands)
Initial release | January 1979; 45 years ago (1979-01) |
---|---|
Operating system | Unix and Unix-like |
Platform | Cross-platform |
Type | Command |
In Unix-like operating systems, true
and false
are commands whose only function is to always return with a predetermined exit status. Programmers and scripts often use the exit status of a command to assess success (exit status zero) or failure (non-zero) of the command. The true
and false
commands represent the logical values of command success, because true returns 0, and false returns 1.[Note 1]
Usage
The commands are usually employed in conditional statements and loops of shell scripts. For example, the following shell script repeats the echo hello loop 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 take no "actual" parameters; in the GNU version, the standard parameter --help
displays a usage summary and --version
displays the program version.
Null command
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`}}
See also
- List of Unix commands
- Two-valued logic
- IEFBR14
Notes
- ^ These are distinct from the truth values of classical logic and most general purpose programming languages: true (1 or T) and false (0 or ⊥).
References
External links
true
: return true value – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Groupfalse
: return false value – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
Manual pages
- true(1): Do nothing, successfully – GNU Coreutils reference
- false(1): Do nothing, unsuccessfully – GNU Coreutils reference
- true(1): Return true value – FreeBSD manual page
- false(1): Return false value – FreeBSD manual page
- v
- t
- e
- at
- bg
- crontab
- fg
- kill
- nice
- ps
- time
- alias
- cd
- echo
- test
- unset
- wait
- find
- grep
- Categories
- Standard Unix programs
- Unix SUS2008 utilities
- List