Как сохранить переменные среды при использовании sudo
когда я использую любую команду с sudo переменные среды не существует. Например, после установки при команде wget
работает отлично без sudo
. Однако если я наберу sudo wget
Он говорит, что не может обойти настройки прокси.
4 ответа:
сначала нужно
export HTTP_PROXY
. Во-вторых, вы должны прочитатьman sudo
осторожно, и обратите внимание на-E
флаг. Это работает:$ export HTTP_PROXY=foof $ sudo -E bash -c 'echo $HTTP_PROXY'
вот цитата из man-страницы:
-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.
фокус в том, чтобы добавить переменные среды через и добавить эти строки:
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
принято от ArchLinux wiki.
для Ubuntu 14 вам нужно указать в отдельных строках, поскольку он возвращает ошибки для строк с несколькими переменными:
Defaults env_keep += "http_proxy" Defaults env_keep += "https_proxy" Defaults env_keep += "HTTP_PROXY" Defaults env_keep += "HTTPS_PROXY"
для отдельных переменных, которые вы хотите сделать доступными на одной основе, вы можете сделать ее частью команды.
sudo http_proxy=$http_proxy wget "http://stackoverflow.com"
вы также можете объединить два
env_keep
утверждения в ответе Ахмеда Асвани в одно утверждение, подобное этому:
Defaults env_keep += "http_proxy https_proxy"
вы также должны рассмотреть возможность указания
env_keep
только для одной команды такой:
Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"