linux - keep - sudo: sorry, you are not allowed to preserve the environment
How to keep environment variables when using sudo (3)
First you need to
export HTTP_PROXY. Second, you need to read
man sudo carefully, and pay attention to the
-E flag. This works:
$ export HTTP_PROXY=foof $ sudo -E bash -c 'echo $HTTP_PROXY'
Here is the quote from the man page:
-E, --preserve-env Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.
When I use any command with sudo the environment variables are not there. For example after setting HTTP_PROXY the command
wget works fine without
sudo. However if I type
sudo wget it says it can't bypass the proxy setting.
For individual variables you want to make available on a one off basis you can make it part of the command.
sudo http_proxy=$http_proxy wget "http://.com"
You can also combine the two
env_keep statements in Ahmed Aswani's answer into a single statement like this:
Defaults env_keep += "http_proxy https_proxy"
You should also consider specifying
env_keep for only a single command like this:
Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"