> For the complete documentation index, see [llms.txt](https://linux-tutorial-cli.gitbook.io/linux-cli-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linux-tutorial-cli.gitbook.io/linux-cli-tutorial/txt-files/env.md).

# env

## env

The `env` command in Unix-like operating systems is used to manage the environment for processes. It can be used to display the current environment variables, set new environment variables, or run commands with a modified environment. Here's an overview of the `env` command and its usage:

#### Overview of `env`

**Purpose:** The `env` command is used to run a command in a modified environment or to display the current environment variables.

#### Basic Syntax

```bash
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
```

#### Common Uses and Examples

1. **Display Environment Variables:**
   * Running `env` without any arguments will list all the current environment variables and their values.

     ```bash
     env
     ```

     Example output:

     ```bash
     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
     HOME=/home/user
     USER=user
     SHELL=/bin/bash
     ```
2. **Run a Command with Modified Environment Variables:**
   * You can use `env` to set environment variables for a single command execution without altering the global environment.

     ```bash
     env VAR=value command
     ```

     For example, to run `echo $VAR` with `VAR` set to `hello`:

     ```bash
     env VAR=hello echo $VAR
     ```

     Output:

     ```bash
     hello
     ```
3. **Remove All Environment Variables:**
   * You can use the `-i` or `--ignore-environment` option to clear all environment variables and run a command in a clean environment.

     ```bash
     env -i command
     ```

     For example, to run a shell with no environment variables:

     ```bash
     env -i /bin/bash --noprofile --norc
     ```
4. **Unset an Environment Variable:**
   * You can use `env` to run a command with specific environment variables unset.

     ```bash
     env -u VAR command
     ```

     For example, to run `printenv` without the `USER` environment variable:

     ```bash
     env -u USER printenv
     ```

#### Practical Examples

1. **Temporary PATH Modification:**
   * Run a command with a modified `PATH` variable without changing the global `PATH`.

     ```bash
     env PATH=/custom/path:$PATH some_command
     ```
2. **Debugging with a Clean Environment:**
   * Run a script or command in a clean environment to debug issues caused by environment variables.

     ```bash
     env -i /path/to/script.sh
     ```
3. **Setting Multiple Variables:**
   * You can set multiple environment variables for a command execution.

     ```bash
     env VAR1=value1 VAR2=value2 command
     ```

     For example:

     ```bash
     env DB_HOST=localhost DB_USER=root /path/to/db_connect_script.sh
     ```

#### Environment Variables

Environment variables are key-value pairs that influence the behavior of processes and applications in the shell. Common environment variables include:

* `PATH`: Specifies the directories to search for executable files.
* `HOME`: Indicates the home directory of the current user.
* `USER`: Represents the name of the current user.
* `SHELL`: Specifies the path to the current shell.

#### Conclusion

The `env` command is a versatile tool for managing environment variables and running commands in customized environments. It's particularly useful for testing, debugging, and scripting, allowing precise control over the execution environment.

## help

```
env [options] [variable=value]

Print or set environment variables.

Options:

-i, --ignore-environment   Do not inherit environment variables from the parent shell.
-u, --unset   Unset environment variable.
-l, --list   List all environment variables.
-v, --verbose   Print each variable and its value.
-P, --path   Print the current $PATH.
-S, --secure   Print environment variables in a secure way.

Examples:

    env
    env HOME=/home/user
    env -i
    env -u HOME
    env -l
    env -v
    env -P
    env -S

```
