экспорт env в оболочку archlinux - PullRequest
0 голосов
/ 18 октября 2010

когда я в компании, мне нужно экспортировать 3 переменные окружения, http_proxy, https_proxy, all_proxy,

Я написал файл ~ / bin / setproxy, как этот

#! /bin/sh
export http_proxy=http://......:8888
export https_proxy=http://......:8888
export all_proxy=http://......:8888

, но когдаЯ выполняю этот файл в bash, затем использую env |grep http_proxy, я ничего не получил.но «source ~ / bin / setproxy» работает, но есть ли способ сократить это до 1 слова команды.Я написал другой файл только в 1 строку,

source ~/bin/setproxy

, но он не работает.

Ответы [ 2 ]

3 голосов
/ 18 октября 2010

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

Вы можете поместить этот код в функцию, скажем, в .bashrc, и вызвать ее так, чтобы она работала, что-то вроде следующего:

function setproxy {
    export http_proxy=http://......:8888
    export https_proxy=http://......:8888
    export all_proxy=http://......:8888
}
2 голосов
/ 18 октября 2010

Я думаю, что ваша проблема в том, что вы выполняете либо:

~/bin/setproxy

или

your_other_file_which_sources_setproxy

В в обоих случаях они запускаются в подоболочке, что означает, что экспорт находится в этой оболочке, не оболочка, из которой вы их вызываете.

Вы можете использовать краткую форму source:

. ~/bin/setproxy

или создайте псевдоним:

alias sp='source ~/bin/setproxy'

в .bashrc или других сценариях запуска.

Это последнее решение позволит вам просто выполнить:

sp

чтобы сделать работу.

...