On Unix-like operating systems, export is a builtin command of the Bash shell. It designates specified variables and functions to be passed to child processes.

Description

Normally, when you run a command at the bash prompt, a dedicated process is created with its own environment, exclusively for running your command. Any variables and functions you defined before running the command are not shared with new processes — unless you explicitly mark them with export.

  • Description
  • Syntax
  • Examples
  • Related commands
  • Bash builtins help
  • Linux commands help

Syntax

export [-f] [-n] [name[=value] …]

export -p

Options

The export builtin command has the following options:

Examples

The following series of commands will illustrate how variables are passed to a child process in bash, with and without export. First, set the value of a new variable named myvar:

myvar=“This variable is defined.”

Verify that it is set, and that it has a value in the current shell context:

echo $myvar

This variable is defined.

Create a new shell context by running bash at the bash command prompt:

bash

Now you have a new bash shell, which is running inside your original bash session. The variable myvar has no value in this context, because it was not passed from the original shell:

(Only a newline is printed, because myvar has no value.)

Now, exit this shell, which returns you the original bash session:

exit

Here, myvar still has a value:

Now, start a new bash session again — but this time, export the variable first:

export myvar

This time, the value of myvar is passed to the new shell:

Great. Exit the subshell:

Now let’s verify that it works with functions, too.

Create a new shell function, myfunc. You can define a bash shell function by placing parentheses after the function name, and then a compound command. A compound command can take different forms; here, we will enclose it in curly braces, with a semicolon after each command, including the last one:

myfunc () { echo “This function is defined.”; }

Now myfunc is a command name you can run in the current shell:

myfunc

This function is defined.

To pass this function to any child processes, use export -f:

export -f myfunc

You can verify that it is passed by starting bash in a child process, and running myfunc:

Hopefully these examples help you better understand how export is useful, and give you a better understanding of how bash creates new processes.

Don’t forget you can always check what variables and functions will be exported to child processes by running export -p:

(a really long list of what gets exported from the current shell)

declare — Set or view the values and attributes of bash variables and functions.exec — Destroy the current shell and replace it with a new process.