# Linux commands: export

> Learn how the Linux export command makes a variable available to child processes and subshells, how to append to PATH, and how to remove a variable with -n.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2020-10-14 | Topics: [CLI](https://flaviocopes.com/tags/cli/) | Canonical: https://flaviocopes.com/linux-command-export/

The `export` command is used to export variables to child processes.

What does this mean?

Suppose you have a variable TEST defined in this way:

```bash
TEST="test"
```

You can print its value using `echo $TEST`:

![Terminal showing echo $TEST command outputting the value test](https://flaviocopes.com/images/linux-command-export/Screen_Shot_2020-09-09_at_17.32.49.png)

But if you try defining a Bash script in a file `script.sh` with the above command:

![Nano editor showing script.sh file with echo $TEST command](https://flaviocopes.com/images/linux-command-export/Screen_Shot_2020-09-09_at_17.35.23.png)

Then you set `chmod u+x script.sh` and you execute this script with `./script.sh`, the `echo $TEST` line will print nothing!

This is because in Bash the `TEST` variable was defined local to the shell. When executing a shell script or another command, a subshell is launched to execute it, which does not contain the current shell local variables.

To make the variable available there we need to define `TEST` not in this way:

```bash
TEST="test"
```

but in this way:

```bash
export TEST="test"
```

Try that, and running `./script.sh` now should print "test":

![Terminal showing export TEST="test" command followed by ./script.sh execution printing test](https://flaviocopes.com/images/linux-command-export/Screen_Shot_2020-09-09_at_17.37.56.png)

Sometimes you need to append something to a variable. It's often done with the `PATH` variable. You use this syntax:

```bash
export PATH=$PATH:/new/path
```

It's common to use `export` when you create new variables in this way, but also when you create variables in the `.bash_profile` or `.bashrc` configuration files with Bash, or in `.zshenv` with Zsh.

To remove a variable, use the `-n` option:

```bash
export -n TEST
```

Calling `export` without any option will list all the exported variables.

The `export` command works on Linux, macOS, WSL, and anywhere you have a UNIX environment
