У меня вопрос по поводу установки значения прокси в операционной системе Unix. Я хочу временно применить настройки прокси-сервера для текущего при переходе в оболочку, и это не должно влиять на общесистемные настройки прокси-сервера, потому что я использую там другое значение.
Я выполняю команду ниже
export HTTPS_PROXY=abc.com:9900
newman run <command goes on> //npm command
unset HTTPS_PROXY
, но это также отменяет весь системный прокси. любая подсказка, как выполнить это в текущей оболочке в качестве единственного вида локальной среды
Вы можете выполнить команду как:
HTTPS_PROXY=abc.com:9900 newman run <command goes on> //npm command
, и это установит переменную только для этого запуска процесса
Встроенные функции export
и unset
(не команды) влияют только на текущий экземпляр bash и его дочерние элементы!
Переменная $HTTPS_PROXY
обычно задается через [ 115] (система отверстий) или локально в ~/.bashrc
. Если в вашей системе всегда установлена прокси-переменная, вы можете изменить ее в текущей оболочке или вложенной оболочке:
# Show current proxy settings
$ echo proxy=$HTTPS_PROXY
proxy=http://localhost:3128/
# Proxy setting in new shell (important use singel quotes):
$ bash -c 'echo proxy=$HTTPS_PROXY'
proxy=http://localhost:3128/
# Unset proxy in new shell:
$ bash -c 'unset HTTPS_PROXY; echo proxy=$HTTPS_PROXY'
proxy=
Таким образом, ваша система не подвержена export
или unset
. ] в вашей текущей оболочке.
Как предлагается в другом ответе, вы всегда можете изменять переменные оболочки для каждой команды, и большинство инструментов не будут использовать настройки прокси, если $HTTP(S)_PROXY
пусто:
# Empty proxy variable for bash command
$ HTTPS_PROXY= bash -c 'echo proxy=$HTTPS_PROXY'
proxy=
# Or clear all proxy variables
HTTP_PROXY= HTTPS_PROXY= bash -c 'echo proxy=$HTTPS_PROXY'
proxy=
Проблема заключается в том, что переменная HTTPS_PROXY, вероятно, установлена во время загрузки, поэтому, когда вы очищаете ее с помощью
unset HTTPS_PROXY
, она больше не будет заполняться, пока вы не перезагрузите компьютер (или, возможно, не выход из системы / Логин).
Простым решением было бы сохранить текущее значение во временной переменной, а затем восстановить его, когда это будет сделано, то есть:
export TMP_HTTPS=$HTTPS_PROXY
export HTTPS_PROXY=abc.com:9900
newman run <command goes on> //npm command
export HTTPS_PROXY=$TMP_HTTPS
unset TMP_HTTPS
, так как это довольно утомительно делать каждый раз Лучшим решением было бы добавить переменную с правильным глобальным прокси к вашему .bashrc
или .bash_profile
. Таким образом, каждый раз, когда вы открываете новую оболочку, у вас будет правильная.
Это имеет недостаток, заключающийся в возможности создания конфликтов.
Другим решением было бы создание функции bash с локальным переопределением переменной HTTPS_PROXY
(как объяснено здесь ). Что-то вроде:
my_custom_newman() {
local HTTPS_PROXY=abc.com:9900
newman run <command goes on> //npm command
}