Tentei o seguinte comando para definir Proxy em yaourt
:
export ALL_PROXY=http://proxy.example.com:8080
A questão é como remover a configuração do proxy em yaourt
? Em geral, como posso remover o valor de uma variável no shell atual?
Comentários
Resposta
Para remover uma variável de ambiente, execute
unset ALL_PROXY
Observe que uma variável de ambiente só tem efeito em um programa e o programa dela lançamentos. Se você definir uma variável de ambiente em uma janela de shell, ela não afetará outras janelas de shell.
Se você adicionou export ALL_PROXY=…
a um arquivo de inicialização, remova a partir daí.
Você pode executar export
sem argumentos para ver quais variáveis de ambiente estão definidas no shell atual.
Lembre-se disso para disponibilizar uma variável shell para os programas iniciados por esse shell, você precisa exportá-la, executando export VAR
após a atribuição VAR=VALUE
ou combinando os dois (export VAR=VALUE
).
Comentários
- Acho que ' não é essencial que
export VAR
ocorra após a atribuição. Observe:sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'
prints " F2 = 2 \ nF1 = 2 ". -
unset
também é necessário para limpar matrizes bash associativas (isto é: bash " tabelas hash " ou " dicts "), conforme este tutorial explica na seção intitulada " Limpando ": artificialworlds.net/blog/2012/10/17/… .
Resposta
Para cancelar a definição de uma variável limitada em bash, use unset VARIABLE
(unset ALL_PROXY
no seu caso). Este comando realmente exclui a variável. Você também pode definir o valor de uma variável como vazio por
VARIABLE=
ou
VARIABLE=""
A diferença é que os dois últimos comandos não excluem a variável. Você pode ver a diferença usando o sinalizador -u
com set
para forçá-lo a tratar as variáveis não definidas como um erro ao substituir:
/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
No exemplo acima, o bash reclama sobre var
é desvinculado (depois de remover seu valor), que é o erro esperado (observe que isso não acontece no segundo comando echo, o que significa que var
tem um valor que é ou null
).
Comentários
- e se eu tenho uma variável em meu arquivo de script de shell e eu forneço esse arquivo, então como vou remover isso?
- @Abhinav use
unset
no script. se aplica.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
que irá definir o envvar apenas para a execução do comando . Você pode colocar quantasFOO=bar BAZ=bat
variáveis desejar antes de executar o comando.