Differences between revisions 11 and 24 (spanning 13 versions)
Revision 11 as of 2023-01-25 22:11:31
Size: 4245
Comment:
Revision 24 as of 2025-12-19 20:18:05
Size: 4399
Comment: Cleanup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Builtin Commands = = Bash Builtin Commands =

The set of portable commands.
Line 9: Line 11:
== : == == Commands ==
Line 11: Line 13:
Does nothing; arguments passed to it are expanded but immediately discarded.

----
||'''Command''' ||'''Description'''||'''Example'''||
||`.` ||Alias for `source`|| ||
||`:` ||No-op || ||
||`alias` ||Creates an [[Bash/Alias|alias]]|| ||
||`bind` || || ||
||`builtin` ||Executes a builtin command|| ||
||`caller` || || ||
||`cd` ||Changes the current working directory|| ||
||`command` ||Executes a command|| ||
||`declare` ||Set a variable, optionally with a value|| ||
||`dirs` || || ||
||`disown` || || ||
||`echo` || || ||
||`enable` || || ||
||`eval` ||Executes a command|| ||
||`exec` ||Replaces the shell with a command|| ||
||`exit` ||Causes a script or shell to exit immediately|| ||
||`export` ||Marks one or more names as variables to be included in the environment of subsequently-called commands||`export varname="some value"`||
||`fc` || || ||
||`getopts` || || ||
||`hash` || || ||
||`help` ||Prints helpful information about a builtin command|| ||
||`history` || || ||
||`kill` || || ||
||`let` || || ||
||`local` ||Only valid within a function definition; see [[Bash/Function#Local_Scope|here]]|| ||
||`logout` ||Exits a login shell immediately|| ||
||`mapfile` || || ||
||`popd` || || ||
||`printf` || || ||
||`pushd` || || ||
||`pwd` ||Prints the current working directory|| ||
||`read` || || ||
||`readarray` || || ||
||`readonly` || || ||
||`set` ||Sets a [[Bash/ShellOptions|shell option]]|| ||
||`shift` ||Renames the [[Bash/Variables#Positional_Variables|positional variables]]|| ||
||`shopt` ||Sets a [[Bash/ShellOptions|shell option]]|| ||
||`source` || || ||
||`test` ||Executes a [[Bash/Test|test]]|| ||
||`time` || || ||
||`trap` ||Creates a trap || ||
||`typeset` || || ||
||`unalias` ||Removes an [[Bash/Alias|alias]]|| ||
||`unset` ||Unsets a [[Bash/ShellOptions|shell option]]|| ||
||`wait` || || ||
Line 17: Line 62:
== Alias == === Builtin ===
Line 19: Line 64:
See [[Bash/Alias|here]].

----
`builtin` can be useful to call a builtin command when there is a custom command with the same name.
Line 25: Line 68:
== Bg == === Cd ===
Line 27: Line 70:
---- Calling `cd` without an argument is the same as `cd ~`.

`cd -` changes the current working directory to the previous working directory.
Line 31: Line 76:
== Bind == === Command ===
Line 33: Line 78:
---- `command` can be useful to call a command when there is a function with the same name.
Line 35: Line 80:


== Break ==

See [[Bash/Looping|here]].

----



== Builtin ==

Execute a builtin command. This is only useful when reimplementing a builtin but still need to call the original builtin within the function.

----



== Caller ==

----



== Cd ==

Change the current working directory to a new path. Can be a relative or absolute path, as well as the special `.` and `..` directories.

Note the rules for [[Bash/Expansion#Tilde_Expansion|tilde expansion]] when using the `~` symbol here.

`cd -` changes the current working directory to the previous working directory.

There is also special behavior around specifying ''nothing''. `cd` is the same as `cd ~`.

----



== Command ==

Execute a command. This can be useful to call a command when there is a function with the same name. It can also be used to determine if a command is locally available.
`command` is also commonly used to determine if a command is locally available.
Line 84: Line 89:
----
Line 87: Line 91:
=== Declare ===
Line 88: Line 93:
== CompGen == When used within a function definition, the variable is set to [[Bash/Function#Local_Scope|local scope]].
Line 90: Line 95:
See [[Bash/Completion|here]]. To create a variable that is marked for export, use:

{{{
declare -x myvar
}}}

To create a variable that is marked for tracing, use:

{{{
declare -t myvar
}}}

To create a read-only constant, use:

{{{
declare -r myconst
}}}

To create an integer variable, use:

{{{
declare -i myinteger
}}}

To create an [[Bash/Array|array]], use:

{{{
declare -a myarray
}}}

To create an associative array, use:

{{{
declare -A myarray
}}}

With some exceptions, these options can be combined. Additionally, options can be explicitly disabled by substituting the dash (`-`) with a plus sign (`+`).
Line 96: Line 137:
== Complete == == Reserved Keywords ==
Line 98: Line 139:
See [[Bash/Completion|here]]. Some parts of the language are technically implemented as a command.
Line 100: Line 141:
---- See [[Bash/Looping|here]] for `break` and `continue`.
Line 102: Line 143:
See [[Bash/Function#Error_and_Return_Codes|here]] for `return`.
Line 103: Line 145:
See [[Bash/JobControl|here]] for `bg`, `coproc`, `fg`, and `jobs`.
Line 104: Line 147:
== CompOpt ==

See [[Bash/Completion|here]].

----



== Continue ==

See [[Bash/Looping|here]].

----



== Declare ==

----



== Dirs ==

----



== Disown ==

----



== Echo ==

----



== Enable ==

----



== Eval ==

Executes a command. This is useful when building commands through [[Bash/Expansion#Parameter_Expansion|parameter expansion]].

----



== Exec ==

Replaces the shell with the specified command. This is useful in scripts that dispatch to other commands, like `demunu(1)`.

----



== Exit ==

Causes a script or shell to exit immediately with a specified exit code.

If used in an interactive shell, or when used in a script that is `source`d, causes the shell session to exit. That is likely not desireable; see [[#Return|return]] instead.

----



== Export ==

Marks one or more names as variables to be included in the environment of subsequently-called commands.

To set a variable and mark it simultaneously, try:

{{{
export varname="some value"
}}}

To instead export a function, use `export -f funcname`

----



== Fc ==

----



== Fg ==

----



== GetOpts ==

----



== Hash ==

----



== Help ==

Prints helpful information about a builtin command.

{{{
help help
}}}

----



== History ==

----



== Jobs ==

----



== Kill ==

----



== Let ==

See [[Bash/Arithmetic|here]].

----



== Local ==

Only valid within a function definition. See [[Bash/Function#Local_Scope|here]].

----



== LogOut ==

Exit a login shell immediately.

----



== MapFile ==

----



== PopD ==

----



== PrintF ==

----



== PushD ==

----



== Pwd ==

Prints the current working directory.

----



== Read ==

----



== ReadArray ==

----



== ReadOnly ==

----



== Return ==

Only valid within a function definition. See [[Bash/Function#Error_and_Return_Codes|here]].

----



== Set ==

See [[Bash/ShellOptions|here]].

----



== Shift ==

Renames the [[Bash/Variables#Positional_Variables|special positional variables]].

If `shift` is called with no argument, `$2` is renamed to `$1`, `$3` is renamed to `$2`, and so on.

`shift N` causes `$N+1` to be renamed to `$N`, `$N+2` to be renamed to `$N+1`, and so on.

----



== ShOpt ==

See [[Bash/ShellOptions|here]].

----



== Source ==

Aliased to `.`.

----



== Test ==

Aliased to `[`.

See [[Bash/Test|here]].

----



== Time ==

----



== Trap ==

----



== TypeSet ==

----



== UnAlias ==

See [[Bash/Alias|here]].

----



== UnSet ==

See [[Bash/ShellOptions|here]].

----



== Wait ==
Lastly, note that `compgen`, `complete`, and `compopt` all have to do with Bash completion.

Bash Builtin Commands

The set of portable commands.


Commands

Command

Description

Example

.

Alias for source

:

No-op

alias

Creates an alias

bind

builtin

Executes a builtin command

caller

cd

Changes the current working directory

command

Executes a command

declare

Set a variable, optionally with a value

dirs

disown

echo

enable

eval

Executes a command

exec

Replaces the shell with a command

exit

Causes a script or shell to exit immediately

export

Marks one or more names as variables to be included in the environment of subsequently-called commands

export varname="some value"

fc

getopts

hash

help

Prints helpful information about a builtin command

history

kill

let

local

Only valid within a function definition; see here

logout

Exits a login shell immediately

mapfile

popd

printf

pushd

pwd

Prints the current working directory

read

readarray

readonly

set

Sets a shell option

shift

Renames the positional variables

shopt

Sets a shell option

source

test

Executes a test

time

trap

Creates a trap

typeset

unalias

Removes an alias

unset

Unsets a shell option

wait

Builtin

builtin can be useful to call a builtin command when there is a custom command with the same name.

Cd

Calling cd without an argument is the same as cd ~.

cd - changes the current working directory to the previous working directory.

Command

command can be useful to call a command when there is a function with the same name.

command is also commonly used to determine if a command is locally available.

if ! command -v mypy >/dev/null 2>&1; then
  echo "cannot locate mypy; is it installed?"
  exit
fi

Declare

When used within a function definition, the variable is set to local scope.

To create a variable that is marked for export, use:

declare -x myvar

To create a variable that is marked for tracing, use:

declare -t myvar

To create a read-only constant, use:

declare -r myconst

To create an integer variable, use:

declare -i myinteger

To create an array, use:

declare -a myarray

To create an associative array, use:

declare -A myarray

With some exceptions, these options can be combined. Additionally, options can be explicitly disabled by substituting the dash (-) with a plus sign (+).


Reserved Keywords

Some parts of the language are technically implemented as a command.

See here for break and continue.

See here for return.

See here for bg, coproc, fg, and jobs.

Lastly, note that compgen, complete, and compopt all have to do with Bash completion.


CategoryRicottone

Bash/BuiltinCommands (last edited 2025-12-19 20:18:05 by DominicRicottone)