| -a--argv0 | pass ARG as the zeroth argument of COMMAND |
| -i--ignore-environment | start with an empty environment |
| -0--null | end each output line with NUL, not newline |
| -u--unset | remove variable from the environment |
| -C--chdir | change working directory to DIR |
| -S--split-string | process and split S into separate arguments; used to pass multiple arguments on shebang lines |
| --block-signal | block delivery of SIG signal(s) to COMMAND |
| --default-signal | reset handling of SIG signal(s) to the default |
| --ignore-signal | set handling of SIG signal(s) to do nothing |
| --list-signal-handling | list non default signal handling to stderr |
| -v--debug | print verbose information for each processing step |
| --help | display this help and exit |
| --version | output version information and exit |
| 125 | if the env command itself fails |
| 126 | if COMMAND is found but cannot be invoked |
| 127 | if COMMAND cannot be found |
| - | the exit status of COMMAND otherwise |
NAME
env - run a program in a modified environment
SYNOPSIS
env [OPTION]... [-] [NAME=VALUE]... [COMMAND[ARG]...]
DESCRIPTION
Set each NAME to VALUE in the environment and run COMMAND.
Mandatory arguments to long options are mandatory for short options too.
- -a, --argv0=ARG
pass ARG as the zeroth argument of COMMAND
- -i, --ignore-environment
start with an empty environment
- -0, --null
end each output line with NUL, not newline
- -u, --unset=NAME
remove variable from the environment
- -C, --chdir=DIR
change working directory to DIR
- -S, --split-string=S
process and split S into separate arguments; used to pass multiple arguments on shebang lines
- --block-signal[=SIG]
block delivery of SIG signal(s) to COMMAND
- --default-signal[=SIG]
reset handling of SIG signal(s) to the default
- --ignore-signal[=SIG]
set handling of SIG signal(s) to do nothing
- --list-signal-handling
list non default signal handling to stderr
- -v, --debug
print verbose information for each processing step
- --help
display this help and exit
- --version
output version information and exit
A mere - implies -i. If no COMMAND, print the resulting environment.
SIG may be a signal name like 'PIPE', or a signal number like '13'. Without SIG, all known signals are included. Multiple signals can be comma-separated. An empty SIG argument is a no-op.
Exit status:
- 125
if the env command itself fails
- 126
if COMMAND is found but cannot be invoked
- 127
if COMMAND cannot be found
- -
the exit status of COMMAND otherwise
SCRIPT OPTION HANDLING
The -S option allows specifying multiple arguments in a script. Running a script named 1.pl containing the following first line:
#!/usr/bin/env -S perl -w -T
...Will execute perl -w -T 1.pl
Without the '-S' parameter the script will likely fail with:
/usr/bin/env: 'perl -w -T': No such file or directorySee the full documentation for more details.
NOTES
POSIX's exec(3p) pages says:
AUTHOR
Written by Richard Mlynarik, David MacKenzie, and Assaf Gordon.
REPORTING BUGS
GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report any translation bugs to <https://translationproject.org/team/>
SEE ALSO
sigaction(2), sigprocmask(2), signal(7)
Full documentation <https://www.gnu.org/software/coreutils/env> or available locally via: info '(coreutils) env invocation'
Packaged by Debian (9.7-3) Copyright © 2025 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.