# Understanding the PATH Variable 
                                              in Bash

Environment variables track specific system information, such as the name of the user logged into the shell, the default home directory for the user, the search path the shell uses to find executable programs, and so on.

The `PATH` environment variable in Bash and other Unix-like operating systems such as Linux and macOS is a <mark>critical</mark> variable that dictates where the shell looks for executable files. When you type a command in the terminal, the shell searches through the directories listed in the `PATH` variable, in the order they are listed, to find the executable file that matches the command.

The directories in the `PATH` variable are separated by colons (`:`). You can view your current `PATH` setting by running the following command:

```bash
echo $PATH
```

### How it Works

For example, suppose `PATH` is set as follows:

![](https://i.imgur.com/EbrUtQ2.png align="center")

When you run a command like `ls`, the shell will look for the `ls` executable in the following directories, in this order:

1. `/usr/local/bin/`
    
2. `/usr/bin/`
    
3. `/user/local/sbin/`
    

If it finds `ls` in `/usr/bin/`, for instance, it will run it from there and won't search in `/user/local/sbin/`.

---

## Workshop Exercises

### Exercise 1: Understand PATH Priority

1. Open a terminal.
    
2. Type `which ls` and press Enter.
    
    ![](https://i.imgur.com/i2zg2lF.png align="center")
    
3. The output shows the absolute path of the `ls` command. As we can see, this directory is the second one listed in the `PATH` directory.
    

### Exercise 2: Add a Directory to PATH

Create a directory `~/scripts` where you keep some of your custom scripts. To add this directory to your `PATH` as follows:

1. Open a terminal.
    
2. Run `export PATH=$PATH:~/my_scripts`
    
3. Confirm by running `echo $PATH`.
    

![](https://i.imgur.com/9FYR1vR.png align="center")

Note: This change is temporary and will be lost when you close the terminal. To make it permanent, you'll have to add the `export` command to your shell's startup file, like `.bashrc` or `.bash_profile`.

### Exercise 3: Create a Custom Command

1. Create a new script file in the `~/scripts` directory.
    
    ```bash
    touch ~/scripts/test_command.sh
    ```
    
2. Make it executable.
    
    ```bash
    chmod +x ~/scripts/test_command.sh
    ```
    
    ![](https://i.imgur.com/s7nkbRi.png align="center")
    
3. Edit the file to include the following:
    
    ```bash
    #!/bin/bash
    echo "Hello, this is my custom command. Let's check it!"
    ```
    
4. Save the file.
    
5. Try running `test_command.sh` from anywhere in the terminal. Did it work? If not, make sure that `~/my_scripts` is in your `PATH`.
    

![](https://i.imgur.com/sdTpocU.png align="center")

### Exercise 4: Remove a Directory from PATH

1. Run `export PATH=$(echo $PATH | sed 's/:\/home\/centos\/scripts//')`
    
2. This will remove `/home/centos/scripts` from your `PATH` (if it exists).
    
3. Confirm by running `echo $PATH`.
    

![](https://i.imgur.com/2w6Jker.png align="center")
