Here's how to learn about the many bash builtins you might be unfamiliar with. You probably use some bash builtins fairly often whether or not you think of them as builtins or simply as commands. After all, bash builtins are commands, but not implemented as separate executables. Instead, they are part of the bash executable. In other words, they are “built into” bash, thus the term “bash builtins”. If you’re looking for a particular builtin, the which command isn’t going to find it for you because it only looks through a collection of executables. This includes system commands like /bin/echo as well as scripts for which you have execute permission. Here’s an example of which not finding anything: $ which help /usr/bin/which: no help in (/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/shs/bin:/opt/pash:/home/shs) As you can see, the which command looks down your search path ($PATH) and reports back when it can’t find a match. Ask for a man page on any particular builtin, on the other hand, and a man page describing all of the builtins will be displayed along with explanations for each one. Just be prepared for a lot of scrolling as you scan through the output! Here’s a line count for my generated output: $ man popd | wc -l 2109 NOTE: It doesn’t matter which particular builtin you ask about. You will get the same big helping of descriptions for all of them. $ man shift | wc -l 2109 Ask about a builtin with the bash builtin called “help” and you’re going to get a fairly thorough explanation of what that builtin will do for you. Since help is a builtin, it can tell you about itself and any other bash builtin. $ help help help: help [-dms] [pattern ...] Display information about builtin commands. Displays brief summaries of builtin commands. If PATTERN is specified, gives detailed help on all commands matching PATTERN, otherwise the list of help topics is printed. Options: -d output short description for each topic -m display usage in pseudo-manpage format -s output only a short usage synopsis for each topic matching PATTERN Arguments: PATTERN Pattern specifying a help topic Exit Status: Returns success unless PATTERN is not found or an invalid option is given. To get a list of all of the bash builtins, just type “help” on the command line and you should get a two-column listing like that shown below. $ help GNU bash, version 5.2.15(1)-release (x86_64-redhat-linux-gnu) These shell commands are defined internally. Type `help' to see this list. Type `help name' to find out more about the function `name'. Use `info bash' to find out more about the shell in general. Use `man -k' or `info' to find out more about commands not in this list. A star (*) next to a name means that the command is disabled. job_spec [&] history [-c] [-d offset] [n] or his> (( expression )) if COMMANDS; then COMMANDS; [ elif > . filename [arguments] jobs [-lnprs] [jobspec ...] or jobs> : kill [-s sigspec | -n signum | -sig> [ arg... ] let arg [arg ...] [[ expression ]] local [option] name[=value] ... alias [-p] [name[=value] ... ] logout [n] bg [job_spec ...] mapfile [-d delim] [-n count] [-O o> bind [-lpsvPSVX] [-m keymap] [-f fil> popd [-n] [+N | -N] break [n] printf [-v var] format [arguments] builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir] caller [expr] pwd [-LP] case WORD in [PATTERN [| PATTERN]...> read [-ers] [-a array] [-d delim] [> cd [-L|[-P [-e]] [-@]] [dir] readarray [-d delim] [-n count] [-O> command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] > compgen [-abcdefgjksuv] [-o option] > return [n] complete [-abcdefgjksuv] [-pr] [-DEI> select NAME [in WORDS ... ;] do COM> compopt [-o|+o option] [-DEI] [name > set [-abefhkmnptuvxBCEHPT] [-o opti> continue [n] shift [n] coproc [NAME] command [redirections> shopt [-pqsu] [-o] [optname ...] declare [-aAfFgiIlnrtux] [name[=valu> source filename [arguments] dirs [-clpv] [+N] [-N] suspend [-f] disown [-h] [-ar] [jobspec ... | pid> test [expr] echo [-neE] [arg ...] time [-p] pipeline enable [-a] [-dnps] [-f filename] [n> times eval [arg ...] trap [-lp] [[arg] signal_spec ...] exec [-cl] [-a name] [command [argum> true exit [n] type [-afptP] name [name ...] export [-fn] [name[=value] ...] or e> typeset [-aAfFgiIlnrtux] name[=valu> false ulimit [-SHabcdefiklmnpqrstuvxPRT] > fc [-e ename] [-lnr] [first] [last] > umask [-p] [-S] [mode] fg [job_spec] unalias [-a] name [name ...] for NAME [in WORDS ... ] ; do COMMAN> unset [-f] [-v] [-n] [name ...] for (( exp1; exp2; exp3 )); do COMMA> until COMMANDS; do COMMANDS-2; done function name { COMMANDS ; } or name> variables - Names and meanings of s> getopts optstring name [arg ...] wait [-fn] [-p var] [id ...] hash [-lr] [-p pathname] [-dt] [name> while COMMANDS; do COMMANDS-2; done help [-dms] [pattern ...] { COMMANDS ; } Wrap-Up There are likely many bash builtins that you use fairly often on the command line, a healthy handful that you use in scripts, and a good number that you have never tried. Maybe it’s time to explore and learn some new tricks! Related content how-to Compressing files using the zip command on Linux The zip command lets you compress files to preserve them or back them up, and you can require a password to extract the contents of a zip file. By Sandra Henry-Stocker May 13, 2024 4 mins Linux opinion NSA, FBI warn of email spoofing threat Email spoofing is acknowledged by experts as a very credible threat. By Sandra Henry-Stocker May 13, 2024 3 mins Linux how-to The logic of && and || on Linux These AND and OR equivalents can be used in scripts to determine next actions. By Sandra Henry-Stocker May 02, 2024 4 mins Linux how-to Using the apropos command on Linux By Sandra Henry-Stocker Apr 24, 2024 3 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe