Fact-checked by Grok 2 weeks ago

env

The env utility is a command-line tool in Unix-like operating systems that obtains the current environment, optionally modifies it by setting variables (or starting from a clean environment using the -i option), and then invokes another specified utility with the resulting environment, or simply prints the environment variables if no utility is provided. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) Defined in the POSIX standard (IEEE Std 1003.1), it enables users and scripts to run programs in isolated or customized environments without altering the global shell settings. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) Its basic syntax is env [options] [name=value...] [utility [argument...]], where options like -i allow ignoring the inherited environment to start with a clean slate, name=value pairs define new variables, and the utility is the command to execute, passed any additional arguments. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) When no utility is specified, env outputs the current as a list of name=value pairs to standard output, one per line, providing a simple way to inspect variables. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) This functionality makes env particularly useful in shell scripting for tasks such as testing programs under specific conditions, like minimal settings or custom configurations. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) Env's exit status follows standard conventions: if a utility is invoked, env returns the of that utility; otherwise, it returns 0 on successful completion, 1-125 for errors in env, 126 if the utility is found but cannot be invoked (e.g., due to permissions), and 127 if the utility is not found in the PATH. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html) As a portable command, it is available across compliant systems including , macOS, and BSD variants, though some implementations may offer non-standard extensions. [](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/env.html)

Introduction

Description

The env command is a standard utility in operating systems that either prints the current process to standard output or executes a specified program in a modified , ensuring that changes do not affect the calling process's . In systems, the consists of a set of key-value pairs known as environment variables, which are accessible to processes and can influence their execution by providing configuration data, such as paths to executables or user preferences. These variables are maintained by the shell and passed to child processes during execution, allowing for inheritance while enabling targeted modifications. The env utility interacts with the shell by inheriting the current , applying any specified modifications (such as adding, unsetting, or clearing variables), and then invoking the target as a with the adjusted ; this preserves the parent's state post-execution. As part of the POSIX.1 standard, env ensures portability across compliant systems.

Purpose and Benefits

The env utility serves two primary purposes in systems: displaying the current variables for inspection and debugging, and executing a specified command or with a temporarily modified without altering the invoking 's persistent state. When invoked without a command, env outputs all variables in the format name=value, one per line, which is particularly useful for issues related to variable settings, such as misconfigurations or missing dependencies in a or application. This listing capability provides a quick, non-interactive way to examine the runtime , aiding developers in diagnosing problems during testing or deployment. A key benefit of env lies in its ability to create isolated, temporary environment modifications for command execution, thereby avoiding global side effects like permanent changes to critical variables such as or . For instance, by prefixing name=value pairs before the command, env passes an altered solely to the , preserving the original environment and preventing unintended pollution across sessions. This isolation is especially valuable in testing scenarios, where clean or customized environments are needed to simulate different conditions without risking system-wide disruptions, and in automated builds or pipelines to ensure reproducible executions. Additionally, env enhances script portability by enabling dynamic location of interpreters in shebang lines, such as #!/usr/bin/env [python](/page/Python), which searches the rather than relying on a hardcoded absolute path that may vary across systems. This approach improves compatibility when distributing scripts to diverse environments, reducing installation hurdles and promoting adherence to standards for broader interoperability.

Command Syntax

Basic Syntax

The env utility executes a command with a modified , as specified by its arguments. Its core syntax follows the form env [options] [name=value]... [command [args]...] , where options allow for environment modifications, name=value pairs set or override specific environment variables, and command [args]... specifies the target utility to invoke along with its arguments. Options, such as the -i flag, control how the inherited is handled—for instance, by ignoring it entirely and building the environment solely from the provided arguments—while the name=value pairs prepend or modify variables in the environment passed to the command. The command names the utility to execute, which receives the altered environment and any subsequent args as its input. When no command is provided, env defaults to printing the current (as modified by any options or name=value pairs) to standard output, with each variable represented as a single name=value line, facilitating inspection without execution. Under standards, the command must refer to a name rather than a built-in; invoking a special built-in utility yields undefined results.

Options

The env command supports a limited set of standard options defined by the specification, with additional extensions in various implementations. The primary -required option is -i (or --ignore-environment in ), which instructs env to ignore the inherited from the and start with an empty , allowing only explicitly specified variables via name=value operands to be passed to the invoked . This option is essential for creating isolated execution environments, such as in testing or security-sensitive scenarios where inherited variables might introduce unwanted influences. Another widely supported option is -u name (or --unset=name), which removes the specified name from the before invoking the ; multiple -u options can be used to unset several variables sequentially. In coreutils, the - option serves as a shorthand for -i, explicitly starting with an empty , and the command also includes GNU-specific extensions like -S string (or --split-string=string), which processes the provided as a sequence of arguments using shell-like , including support for escape sequences and variable substitution to emulate argument splitting without invoking a . implementations further extend functionality with options for signal handling, such as --default-signal[=sig] to reset specified signals to their default disposition, --ignore-signal[=sig] to ignore them, and --block-signal[=sig] to block them, enabling finer control over process behavior in modified environments. Implementations vary beyond POSIX basics; for instance, FreeBSD's env includes -u for unsetting variables (with support for multiple invocations) and -i for ignoring the inherited environment, but adds non-standard options like -C altwd to change the working directory before execution and -P altpath to specify an alternate search path for locating the utility, bypassing the PATH variable. FreeBSD also supports -S string for splitting a string into arguments, similar to GNU, and -L or -U options to incorporate environment variables from user login classes defined in login.conf(5). While POSIX mandates support for -i, extensions such as -C for directory changes and signal-related flags are implementation-specific and not portable across all Unix-like systems.

Usage Scenarios

Environment Listing

The env utility, when invoked without specifying a command or any arguments, displays the current environment variables. According to the standard, this lists all variables in the unmodified environment inherited by the process. The output is directed to standard output, with each variable printed as a single line in the format name=value, where name is the variable name and value is its associated value. The specification does not mandate a particular order for the variables, though implementations may vary in their presentation. This output can be piped to other commands or redirected to files for further processing, such as filtering or logging. This listing capability is commonly employed for inspecting the runtime environment, such as during of shell sessions to identify unexpected variable settings or for auditing purposes to review globally accessible variables across processes. In scripting contexts, it facilitates checks on exported variables to ensure proper configuration before proceeding with dependent operations. If the -i option or other modifications are applied beforehand, the resulting altered environment is listed instead.

Running Programs

The env utility executes programs by first modifying the current based on provided arguments, then invoking the specified command with that altered . Specifically, it obtains the inherited from the , applies any name=value pairs to set or override variables, and uses functions like execvp() or execlp() to replace itself with the target utility, passing along any additional arguments. This replacement ensures the invoked program runs as a child process inheriting only the modified , without altering the parent's original variables, as env does not persist after . With the -i or --ignore-environment option, the child starts with an empty , inheriting solely the explicitly specified variables, which promotes for controlled execution. A primary application of env is overriding environment variables for targeted tool execution, such as setting a custom PATH to prioritize specific binaries or adjusting DISPLAY for graphical applications in remote sessions. For instance, env PATH=/opt/mytools/bin somecommand ensures somecommand searches only the designated directory, avoiding conflicts with system-wide installations. Another key use is testing software in clean environments, where env -i clears inherited variables, allowing developers to simulate minimal setups and verify program behavior without external influences. In GNU implementations, the current working directory is preserved by default unless overridden with -C, and signal handling from the parent may be inherited, further supporting seamless integration in workflows. Notably, env cannot directly execute shell built-in commands, as it relies on path-based lookup via PATH; attempting to run a built-in results in per standards. If PATH is cleared or unset (e.g., via env -i without redefining it), the full absolute path to the executable must be provided, such as env -i /bin/ls, to successfully invoke the program. This requirement underscores env's focus on external utilities, emphasizing its role in environment isolation rather than shell-internal operations.

In Scripts and Shebangs

In shell scripts, the env utility plays a crucial role in the shebang line, typically formatted as #!/usr/bin/env interpreter, where interpreter is the desired program such as python3 or bash. This construction directs the kernel to execute env with the specified interpreter as an argument, prompting env to search the PATH environment variable dynamically for the interpreter's location rather than relying on a fixed path. The primary benefits of this approach in scripts include enhanced portability across systems, where interpreter installations may vary in location (e.g., /usr/bin/[python](/page/Python) versus /usr/local/bin/[python](/page/Python)), and the avoidance of hardcoding paths that could break execution in diverse environments. By leveraging env, scripts can run without requiring modifications to the user's PATH or assumptions about system-specific directory structures, promoting broader . For advanced scripting, env can be combined with the -i option in s, such as #!/usr/bin/[env](/page/Environment) -i interpreter, to create a clean execution that ignores inherited variables and only uses those explicitly set in the shebang line. Subsets of environment variables can also be set by including assignments in the shebang; for example, #!/usr/bin/[env](/page/Environment) FOO=bar interpreter sets or overrides the specified variable (FOO=bar) in addition to the inherited environment, while #!/usr/bin/[env](/page/Environment) -i FOO=bar interpreter uses only the specified variables, omitting inherited ones. The use of env in this manner originated in 4.4BSD for improving script portability and has since become a standard practice in POSIX-compliant systems.

History and Standards

Origins and Development

The env command was introduced in AT&T's in 1980. It first appeared in the (BSD) lineage in 4.4BSD, released in 1993. This utility was developed to provide a standardized way to manipulate and display process environments, building upon the foundational mechanism introduced in in 1979, which enabled programs to inherit key-value pairs affecting their execution. In the GNU project, the env implementation became part of the coreutils package, with initial authorship credited to Richard Mlynarik and David MacKenzie; Assaf Gordon contributed later enhancements. This version maintained compatibility with BSD while extending functionality for broader use in ecosystems. From its inception, env supported both listing current variables when invoked without arguments and executing programs within a modified specified via command-line options. Subsequent developments added features such as signal handling and current directory preservation in GNU coreutils, reflecting growing needs for robust control in complex scripts and applications. The command's design influenced its inclusion in early drafts of the POSIX.1 standard during the late 1980s and was formalized in the initial .1 standard (IEEE Std 1003.1-1988), ensuring portability across systems by formalizing its syntax and behavior for environment modification and invocation.

POSIX Compliance

The env is defined in the .1 standard, mandating support for the -i option to ignore the inherited and start with an empty one, along with the name=value syntax to define or override environment variables before invoking a specified . The standard requires env to execute external utilities rather than shell built-ins or functions, with the modified passed to the invoked unless -i is used. Compliance is full in major implementations such as GNU coreutils and FreeBSD, which adhere to the core POSIX requirements while incorporating extensions. Options like -u for unsetting specific variables represent partial extensions beyond POSIX, as they are not required by the standard but are widely implemented. Implementation differences arise in extended features; for instance, GNU coreutils adds --ignore-environment as a long-form alias for -i and --chdir to change the working directory before execution, neither of which are POSIX-mandated. BSD variants, such as FreeBSD, include search path options like -P to specify an alternate path for locating the utility, providing flexibility not specified in POSIX. The POSIX.1-2008 edition updated the specification to clarify inheritance rules, specifying that name=value assignments modify the inherited precisely before invocation, promoting portability across conforming systems.

Examples

Basic Examples

The env , when invoked without arguments or a utility , lists all current variables to standard output, one per line in the format name=value. This provides a straightforward way to inspect the in a POSIX-compliant system. For instance, running the command:
[env](/page/env)
produces output similar to:
[PATH](/page/Path)=/usr/local/bin:/usr/bin:/bin
HOME=/home/user
[SHELL](/page/Shell)=/bin/[bash](/page/Bash)
Each line represents an inherited or set , reflecting the current process's without modification. To start a new shell with a cleared environment, ignoring all inherited variables, the -i option can be used followed by the desired , such as /bin/[sh](/page/.sh). This creates a minimal environment suitable for testing or isolation. The command:
env -i /bin/sh
launches an interactive with no environment variables set, prompting the user without any prior context from the parent process. Exiting the shell returns to the original . Setting a single for a specific command is achieved by prefixing the utility with name=value. This temporarily modifies the only for that invocation, allowing verification with tools like printenv. For example:
env FOO=bar printenv FOO
outputs:
bar
confirming the variable was set and passed to printenv, which retrieves and prints the value of the specified name. The change does not persist beyond the command's execution. In script files, env is commonly used in the shebang line to locate the interpreter dynamically via the PATH, enhancing portability across systems where the shell's location may vary. This follows the #! mechanism recognized by Unix-like kernels to specify the executable interpreter. A simple script example begins with:
#!/usr/bin/env bash
echo "Hello, World!"
When made executable (e.g., via chmod +x script.sh) and run as ./script.sh, the uses env to find and invoke bash from the PATH, executing the script's contents. This approach avoids hardcoding paths like /bin/bash.

Advanced Examples

One advanced application of the env command involves clearing the inherited with -i and then setting only the necessary variables to isolate a program's from unwanted settings, which is useful for dependency issues. For instance, in POSIX-compliant systems, the command env -i PATH=/bin HOME= /bin/[ls](/page/Ls) executes the ls with a minimal , providing only a basic PATH and an empty HOME. In implementations supporting the non-standard -u option (such as env on ), specific variables can be unset more directly, e.g., env -u PATH -u HOME /bin/[ls](/page/Ls). This approach helps in scenarios where environment pollution affects output. Setting multiple environment variables simultaneously allows for tailored launches of graphical or terminal applications, overriding defaults to match specific hardware or user preferences. An example is env DISPLAY=:0.0 TERM=xterm-256color xterm, which runs the xterm emulator connected to the local display at resolution 0.0 while configuring it for 256-color support. Such combinations leverage the command's ability to prepend NAME=VALUE pairs before the target program, ensuring precise control over runtime conditions. To execute scripts in a controlled, minimal environment—such as during testing or security-sensitive operations—env can initialize an empty namespace and then define only essential variables. The invocation env -i HOME=/tmp PATH=/bin /path/to/script.sh starts with no inherited variables (via the -i flag), sets a temporary home directory and a restricted path limited to core binaries, and then runs the script. This technique prevents unintended interactions with the parent's environment, promoting reproducibility and isolation. For debugging purposes, env can chain with tracing tools like strace to monitor system calls in a sanitized environment, revealing how a command interacts with the kernel without external influences. A representative example is env -i strace -e trace=execve command, which launches strace in an empty environment to trace only execve calls made by the specified command, aiding in the analysis of process spawning behaviors. This method combines env's environment control with strace's diagnostic capabilities for deeper introspection. Note that strace is specific to Linux systems.

Security and Best Practices

Potential Risks

One significant risk associated with the env command arises from environment variable injection, where untrusted input is used to specify name=value pairs that override existing variables in the . For instance, an attacker could exploit this by setting LD_PRELOAD to point to a malicious , allowing when the target program loads dynamic libraries, as this technique hijacks the on systems. Such injections are particularly dangerous in scripts or applications that process user-supplied environment data without validation, potentially leading to or data breaches. Altering or clearing the PATH environment variable through env can also introduce vulnerabilities by directing command resolution to unintended or malicious executables. When PATH is explicitly set to include untrusted directories, the executed command may resolve to a harmful instead of the intended one, enabling execution flow . Additionally, using the -i or --ignore-environment option initializes an empty , which removes inherited variables but exposes to default behaviors that might lack necessary security configurations, such as restricted paths or sanitized s, potentially causing the command to fail or behave insecurely if it relies on a controlled PATH. In scripts employing env within shebangs (e.g., #!/usr/bin/env bash), reliance on the PATH for interpreter location amplifies these risks, as a manipulated PATH could cause the system to invoke a malicious version of the interpreter from an earlier directory in the search order. This vulnerability is exacerbated in multi-user environments where users can influence the global PATH, potentially leading to the execution of trojanized interpreters that compromise script integrity. In the implementation, modifying signal handling via non-POSIX options like --ignore-signal, --default-signal, or --block-signal can expose processes to operational vulnerabilities, as these changes may prevent proper termination or error handling in the , allowing denial-of-service conditions if critical signals are mishandled across the exec boundary. Although no specific CVEs directly target env's signal handling in coreutils, altering default signal dispositions without justification can lead to compatibility issues and unintended process behaviors. Operationally, env spawns processes via exec, inheriting open descriptors and resources from the unless explicitly managed, which can result in resource leaks if the does not terminate cleanly—such as holding onto unnecessary sockets, , or locks—leading to gradual system resource exhaustion in long-running or looped invocations. Mitigation strategies, such as validating inputs and using absolute paths, can address many of these threats.

Mitigation Strategies

To mitigate potential risks associated with the env command, particularly in environments where manipulation or unintended variable inheritance could lead to issues, several best practices are recommended. When invoking commands via env, using the -i option to start with an empty and specifying full paths to the target executable helps avoid reliance on the inherited , preventing attackers from redirecting execution to malicious binaries through manipulated search paths. For instance, instead of env ls, use env -i /bin/ls to ensure the exact binary is executed regardless of the current . This approach is especially crucial when running untrusted or external utilities, as it isolates the command from potentially harmful environment settings. In scripting scenarios, validating any user-supplied inputs passed to env—such as variable names or values—is essential to prevent injection attacks or unexpected behavior. Scripts should parse and sanitize these inputs before constructing env invocations, ensuring only whitelisted variables are set. Additionally, rather than fully clearing the environment with -i (which may remove necessary system variables and cause nonconformance), prefer the -u option to unset only specific, potentially dangerous variables like LD_PRELOAD or IFS. This selective approach maintains functionality while reducing exposure, as full clears can inadvertently break utilities that rely on standard environment variables like PATH or HOME. For security-sensitive operations, avoid using env in setuid or setgid contexts without thorough isolation, as the command can propagate a controlled environment to privileged processes, potentially allowing escalation if variables like PATH are manipulated by the caller. Setuid programs invoked via env should internally sanitize their environment upon execution to drop privileges and clear untrusted variables, aligning with the principle of least privilege. To audit env usage, combine it with tools like strace for tracing system calls, which can reveal environment modifications, file accesses, and potential anomalies during execution. In lines (e.g., #!/usr/bin/[env](/page/Environment) python), limit exposure by avoiding env altogether in high-security scripts and using absolute paths to the interpreter (e.g., #!/usr/bin/[python](/page/Python)) to bypass resolution entirely. When env must be used in shebangs for portability, follow up in the script with explicit environment control, such as resetting PATH to a secure, minimal value immediately after invocation. For broader system hygiene, regularly update the GNU coreutils package, which includes env, to incorporate security patches addressing vulnerabilities in environment handling. Isolating environments for privileged utilities is a recommended practice to prevent inheritance of unsafe variables, and direct use of env in such scenarios requires explicit sanitization.

Similar Commands

The env utility is often compared to other standard Unix tools for managing environment variables, including the printenv utility and shell built-ins like export and unset, each providing complementary but non-overlapping functionality in environment handling. The printenv command displays the values of specified environment variables or, if none are provided, prints all current environment variables as name=value pairs to standard output, without any capability to modify the environment or invoke other utilities. In comparison, [export](/page/Export) is a special built-in command that assigns the export attribute to variables, making them part of the passed to subsequently executed commands in the current shell session and setting their values persistently for that session. Similarly, unset serves as a special built-in shell command to remove specified variables or functions from the current shell's environment, thereby preventing them from being inherited by child processes launched from the same shell, with effects limited to the invoking shell instance. A key distinction is that while env operates as a standalone external utility for temporary environment modifications during command execution, export and unset are shell-specific special built-ins that must be implemented within the shell itself and cannot function independently outside a shell context.

Modern Alternatives

In modern computing s, containerization technologies provide alternatives to the traditional env command for managing environment variables during execution. 's run command, for instance, allows users to set environment variables inside containers using the --env or -e flag, enabling isolated and reproducible execution of applications with custom configurations without modifying the host system's global . Similarly, systemd-run in systems offers service isolation by executing commands with specified environment variables via the --setenv option, which is particularly useful for running transient processes or services with controlled namespaces and resource limits. Cross-platform scripting languages have integrated environment variable handling directly into their APIs, reducing reliance on shell-level tools like env. In , the os.environ mapping provides access to the current process's environment variables as a dictionary-like object, allowing scripts to read, modify, or query them programmatically. For spawning subprocesses with altered environments, Python's subprocess module supports an env parameter in functions like Popen or run, which overrides or extends the parent environment for the . In , the process.env object similarly exposes environment variables as a plain object, facilitating configuration management in applications across operating systems. Emerging tools focus on dynamic and reproducible environment management at the project level. Direnv extends shell functionality by automatically loading environment variables from .envrc files based on the current directory, unloading them when leaving the directory to maintain a clean global shell state. Nix-shell, part of the Nix package manager, creates isolated shell environments defined declaratively in a shell.nix file, ensuring reproducible setups by pinning dependencies and variables for development workflows. In cloud-native platforms, management often shifts away from command-line invocation toward declarative configurations. For example, in , functions configure s through the service's console, CLI, or SDK, storing key-value pairs that are injected at without requiring inline command modifications, which enhances and in serverless architectures.

References

  1. [1]
    env - The Open Group Publications Catalog
    The env utility shall obtain the current environment, modify it according to its arguments, then invoke the utility named by the utility operand with the ...
  2. [2]
    Environment Variables - The Open Group Publications Catalog
    Environment variables defined in this chapter affect the operation of multiple utilities, functions, and applications.
  3. [3]
    environ(7) - Linux manual page - man7.org
    Bourne-style shells support the syntax NAME=value command to create an environment variable definition only in the scope of the process that executes command.
  4. [4]
    env invocation (GNU Coreutils 9.8)
    ### Summary of `env` from GNU Coreutils Manual
  5. [5]
    env
    ### Options for the `env` Command in FreeBSD
  6. [6]
    How To Read and Set Environmental and Shell Variables on Linux
    Jun 28, 2021 · Environmental variables are variables that are defined for the current shell and are inherited by any child shells or processes. Environmental ...
  7. [7]
    How to List, Set and Manage Linux Environment Variables
    Mar 22, 2022 · Use env to List Linux Environment Variables. In most cases, the env output should match the output of printenv except for the _= variable. This ...
  8. [8]
    env(1) - Linux manual page
    ### Summary of `env` Command (man7.org/linux/man-pages/man1/env.1.html)
  9. [9]
    env - FreeBSD Manual Pages
    HISTORY The env command appeared in 4.4BSD. The -P, -S and -v options were added in FreeBSD 6.0. The -0, -L and -U options were added in FreeBSD 13.0. The ...
  10. [10]
    getenv(3) - OpenBSD manual pages
    The function getenv () appeared in Version 7 AT&T UNIX and 3BSD. The functions setenv () and unsetenv () appeared in 4.3BSD-Tahoe. The putenv () function ...
  11. [11]
    env(1)
    ### Summary of `env` Options in FreeBSD
  12. [12]
    env(1) - OpenBSD manual pages
    The env utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flag [ -u ] is an extension to that specification. The historic ...
  13. [13]
  14. [14]
    env(1): run program in modified environment - Linux man page
    Set each NAME to VALUE in the environment and run COMMAND. -i, --ignore-environment start with an empty environment -0, --null end each output line with 0 .
  15. [15]
    Dynamic Linker Hijacking, Sub-technique T1574.006 - Enterprise
    On Linux, adversaries may set LD_PRELOAD to point to malicious libraries that match the name of legitimate libraries which are requested by a victim program, ...
  16. [16]
    Hijack Execution Flow: Path Interception by PATH Environment ...
    Mar 13, 2020 · Adversaries may execute their own malicious payloads by hijacking environment variables used to load libraries.
  17. [17]
    #! /usr/bin/env considered harmful - Julio Merino (jmmv.dev)
    Sep 14, 2016 · Using `#! /usr/bin/env` can lead to incorrect interpreter versions, missing dependencies, and issues with user's PATH, making it unreliable.
  18. [18]
    fork + exec; what are the possible resource leaks? - Google Groups
    It seems that the only way to create a new process is fork. However, fork inherits all file descriptors. exec closes only the file descriptors marked as close ...<|control11|><|separator|>
  19. [19]
    5.4. Environment Variables
    This is dangerous to setuid/setgid programs, because their invoker can completely control the environment variables they're given.Missing: risks | Show results with:risks
  20. [20]
    The Difference Between #!/usr/bin/bash and #!/usr/bin/env bash
    Mar 18, 2024 · This shebang line is used to execute commands with the Bash interpreter. ... It uses the env command to display the environment variables present ...
  21. [21]
  22. [22]
    printenv(1) - Linux manual page - man7.org
    The `printenv` command prints environment variable values. If no variable is specified, it prints all name and value pairs.
  23. [23]
    export
    DESCRIPTION. The shell shall give the export attribute to the variables corresponding to the specified names, which shall cause them to be in the environment ...
  24. [24]
    unset
    A portable POSIX application can use unset without an option to unset a variable, but not a function; the -f option must be used.
  25. [25]
  26. [26]
    Running containers - Docker Docs
    Docker runs processes in isolated containers. A container is a process which runs on a host. The host may be local or remote.General form · Filesystem mounts · Exit status · Runtime constraints on...
  27. [27]
  28. [28]
  29. [29]
  30. [30]
    direnv – unclutter your .profile | direnv
    direnv is a shell extension that loads/unloads environment variables based on the current directory, using .envrc files, avoiding cluttering .profile.Direnv-stdlib(1) man page · Installation · Direnv.toml(1) man page · Development
  31. [31]
    Declarative shell environments with shell.nix — nix.dev documentation
    In this tutorial we'll take a look at how to create reproducible shell environments with a declarative configuration in a Nix file.
  32. [32]
    Working with Lambda environment variables - AWS Documentation
    Choose the Configuration tab, then choose Environment variables. Under Environment variables, choose Edit. Choose Add environment variable. Enter a key and ...Create environment variables · Example scenario for...