Como faço para remover a definição de uma variável na linha de comando?

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

  • Tente unset ALL_PROXY
  • @coffeMug também pode transformar isso em uma resposta, você também pode considerar roubar algumas informações daqui: stackoverflow.com/a/12263914 / 1081936
  • além da resposta aceita, se houver ' um comando que você executa com frequência e que usa uma variável de ambiente que você ' d preferir não definir ou alterar para o resto da sua sessão de shell, você pode executá-lo como: $ ALL_PROXY=http://proxy.example.com:8080 yaourt que irá definir o envvar apenas para a execução do comando . Você pode colocar quantas FOO=bar BAZ=bat variáveis desejar antes de executar o comando.

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *