Posted on
Command Line Interface

Working with Environment Variables in Bash

Author
  • User
    Linux Bash
    Posts by this author
    Posts by this author

Working with Environment Variables in Bash

Environment variables in Bash are variables that define the environment in which processes run. They store system-wide values like system paths, configuration settings, and user-specific data, and can be accessed or modified within a Bash session.

Environment variables are essential for: - Configuring system settings. - Customizing the behavior of scripts and programs. - Storing configuration values for users and applications.

Here’s an overview of how to work with environment variables in Bash.


1. Viewing Environment Variables

To see all the current environment variables, use the env or printenv command:

env

or

printenv

This will print a list of all environment variables and their values.

To view a specific variable:

echo $VARIABLE_NAME

Example:

echo $HOME

This will display the path to the home directory of the current user.


2. Setting Environment Variables

To set an environment variable, you can use the export command. This makes the variable available to any child processes or scripts launched from the current session.

Syntax:

export VARIABLE_NAME="value"

Example:

export MY_VAR="Hello, World!"

Now, the MY_VAR variable is available to the current session and any child processes.

To check its value:

echo $MY_VAR

3. Unsetting Environment Variables

If you no longer need an environment variable, you can remove it with the unset command.

Syntax:

unset VARIABLE_NAME

Example:

unset MY_VAR

After running this command, MY_VAR will no longer be available in the session.


4. Temporary vs. Permanent Environment Variables

Temporary Environment Variables:

Environment variables set using export are only valid for the duration of the current shell session. Once the session ends, the variable will be lost.

Permanent Environment Variables:

To set an environment variable permanently (so that it persists across sessions), you need to add it to one of the shell initialization files, such as: - ~/.bashrc for user-specific variables in interactive non-login shells. - ~/.bash_profile or ~/.profile for login shells.

Example: Setting a permanent variable

  1. Open the file for editing (e.g., ~/.bashrc):

    nano ~/.bashrc
    
  2. Add the export command at the end of the file:

    export MY_VAR="Permanent Value"
    
  3. Save the file and reload it:

    source ~/.bashrc
    

Now, MY_VAR will be available every time a new shell is started.


5. Common Environment Variables

Here are some common environment variables you’ll encounter:

  • $HOME: The home directory of the current user.
  • $USER: The username of the current user.
  • $PATH: A colon-separated list of directories where executable files are located.
  • $PWD: The current working directory.
  • $SHELL: The path to the current shell.
  • $EDITOR: The default text editor (e.g., nano, vim).

Example:

echo $PATH

This will print the directories that are included in your executable search path.


6. Using Environment Variables in Scripts

Environment variables can be used within Bash scripts to customize behavior or store settings.

Example Script:

#!/bin/bash

# Use an environment variable in the script
echo "Hello, $USER! Your home directory is $HOME"

You can also pass variables into scripts when you run them:

MY_VAR="Some Value" ./myscript.sh

Inside myscript.sh, you can access $MY_VAR as if it were set in the environment.


7. Modifying $PATH

The $PATH variable is a crucial environment variable that defines the directories the shell searches for executable files. If you install new software or custom scripts, you may want to add their location to $PATH.

Example: Adding a directory to $PATH

export PATH=$PATH:/path/to/my/custom/bin

This command appends /path/to/my/custom/bin to the existing $PATH.

To make this change permanent, add the export command to your ~/.bashrc or ~/.bash_profile.


8. Environment Variables in Subshells

When you open a new subshell (e.g., by running a script or launching another terminal), the environment variables are inherited from the parent shell. However, changes to environment variables in a subshell will not affect the parent shell.

For example:

export MY_VAR="New Value"
bash  # Open a new subshell
echo $MY_VAR  # This will show "New Value" in the subshell
exit
echo $MY_VAR  # The parent shell's $MY_VAR is unaffected

9. Example of Using Multiple Environment Variables in a Script

#!/bin/bash

# Setting multiple environment variables
export DB_USER="admin"
export DB_PASSWORD="secret"

# Using the variables
echo "Connecting to the database with user $DB_USER..."
# Here, you would use these variables in a real script to connect to a database, for example.

Conclusion

Working with environment variables in Bash is a key part of managing system configuration and making your scripts flexible and portable. By using commands like export, echo, and unset, you can configure, view, and manage variables both temporarily and permanently. Mastering environment variables will help you manage your Linux environment more effectively, automate tasks, and write more dynamic Bash scripts.