Seeing All Variable Values

Problem

How can I see which variables have been exported and what values they have? Do I have to echo each one by hand? How would I tell if they are exported?

Solution

Use the set command to see the value of all variables and function definitions in the current shell.

Use the env (or export -p) command to see only those variables that have been exported and would be available to a subshell.

Discussion

The set command, with no other arguments, produces (on standard out) a list of all the shell variables currently defined along with their values, in a name=value format. The env command is similiar. If you run either, you will find a rather long list of variables, many of which you might not recognize. Those variables have been created for you, as part of the shell’s startup process.

The list produced by env is a subset of the list produced by set, since not all variables are exported.

If there are particular variables or values that are of interest, and you don’t want the entire list, just pipe it into a grep command. For example:

$ set | grep MY

will show only those variables whose name or value has the two-character sequence MY somewhere in it.

See Also

  • help set

  • help export

  • man env

  • Chapter 16 for more on configuring and customizing bash

  • Appendix A for reference lists for all of the built-in shell variables

Get bash Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.