установить значение прокси только в текущей временной оболочке

У меня вопрос по поводу установки значения прокси в операционной системе Unix. Я хочу временно применить настройки прокси-сервера для текущего при переходе в оболочку, и это не должно влиять на общесистемные настройки прокси-сервера, потому что я использую там другое значение.

Я выполняю команду ниже

export HTTPS_PROXY=abc.com:9900
newman run <command goes on> //npm command
unset HTTPS_PROXY

, но это также отменяет весь системный прокси. любая подсказка, как выполнить это в текущей оболочке в качестве единственного вида локальной среды

0
задан 15 April 2019 в 13:10

3 ответа

Вы можете выполнить команду как:

HTTPS_PROXY=abc.com:9900 newman run <command goes on> //npm command

, и это установит переменную только для этого запуска процесса

0
ответ дан 15 April 2019 в 13:10

Встроенные функции 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=
0
ответ дан 15 April 2019 в 13:10

Проблема заключается в том, что переменная 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
}
0
ответ дан 15 April 2019 в 13:10

Другие вопросы по тегам:

Похожие вопросы: