Як видалити змінну в командному рядку?


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змінних, скільки хочете, перш ніж виконувати команду.
onlynone

Відповіді:


112

Щоб видалити змінну середовища, запустіть

unset ALL_PROXY

Зауважте, що змінна середовища набуває чинності лише в програмі та програмі, яку вона запускає. Якщо встановити змінну середовища в одному вікні оболонки, це не вплине на інші вікна оболонки.

Якщо ви додали export ALL_PROXY=…файл ініціалізації, видаліть його звідти.

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

Пам'ятайте, що щоб зробити змінну оболонки доступною для програм, запущених цією оболонкою, її потрібно експортувати або запустивши export VARпісля призначення, VAR=VALUEабо об'єднавши два ( 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).


що робити, якщо у мене в скрипті файлу оболонки є змінна, і я надсилаю цей файл, то як я буду це скасувати?
Абхінав

@Abhinav використання unsetв сценарії. Це ж стосується.
coffeMug
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.