Как мне сбросить переменную в командной строке?

80

Я пробовал следующую команду, чтобы установить прокси yaourt:

export ALL_PROXY=http://proxy.example.com:8080

Вопрос в том, как отключить прокси yaourt? В общем, как я могу сбросить значение переменной в текущей оболочке?

Хамед Камрава
источник
7
Попробуйтеunset ALL_PROXY
coffeMug
@coffeMug может также превратить это в ответ, вы также можете рассмотреть возможность кражи некоторой информации отсюда: stackoverflow.com/a/12263914/1081936
terdon
в дополнение к принятому ответу, если есть команда, которую вы часто запускаете и которая использует переменную среды, которую вы не хотите устанавливать или изменять для остальной части сеанса оболочки, вы можете запустить ее следующим образом: $ ALL_PROXY=http://proxy.example.com:8080 yaourtона установит envvar только для команда запуска. Вы можете поместить столько FOO=bar BAZ=batпеременных, сколько хотите, до запуска команды.
только

Ответы:

113

Чтобы удалить переменную среды, запустите

unset ALL_PROXY

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

Если вы добавили export ALL_PROXY=…файл инициализации, удалите его оттуда.

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

Помните, что для того, чтобы сделать переменную оболочки доступной для программ, запускаемых этой оболочкой, вы должны экспортировать ее, запустив export VARпосле присваивания VAR=VALUEили объединив two ( export VAR=VALUE).

Жиль "ТАК - перестань быть злым"
источник
19

Для сброса связанной переменной в bash используйте unset VARIABLE( unset ALL_PROXYв вашем случае). Эта команда фактически удаляет переменную. Вы также можете установить значение переменной, чтобы очистить с помощью

VARIABLE=

или же

VARIABLE=""

Разница в том, что две последние команды не удаляют переменную. Вы можете увидеть разницу, используя -uфлаг, setчтобы заставить необработанные переменные рассматривать как ошибку при замене:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

В приведенном выше примере bash жалуется на varнесвязанность (после сброса его значения), что является ожидаемой ошибкой (обратите внимание, что это не происходит во второй команде echo, то varесть имеет значение, которое равно emptyили null).

coffeMug
источник
Что если у меня есть переменная в моем файле сценария оболочки, и я получаю этот файл, то как мне это сбросить?
Абхинав
@Abhinav использовать unsetв сценарии. То же самое относится.
coffeMug