Comment annuler la définition dune variable sur la ligne de commande?

Jai essayé la commande suivante pour définir Proxy sur yaourt:

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

La question est de savoir comment désactiver le proxy sur yaourt? En général, comment puis-je annuler la valeur dune variable dans le shell actuel?

Commentaires

  • Essayez unset ALL_PROXY
  • @coffeMug pourrait aussi bien en faire une réponse, vous pouvez également envisager de voler des informations à partir dici: stackoverflow.com/a/12263914 / 1081936
  • en plus de la réponse acceptée, sil y a ' une commande que vous exécutez souvent et qui utilise une variable denvironnement que vous ' Si vous ne définissez pas ou ne changez pas pour le reste de votre session shell, vous pouvez lexécuter comme: $ ALL_PROXY=http://proxy.example.com:8080 yaourt qui définira lenvvar uniquement pour lexécution de la commande . Vous pouvez mettre autant de variables FOO=bar BAZ=bat que vous le souhaitez avant lexécution de la commande.

Réponse

Pour supprimer une variable denvironnement, exécutez

unset ALL_PROXY 

Notez quune variable denvironnement ne prend effet que dans un programme et le programme lance. Si vous définissez une variable denvironnement dans une fenêtre shell, cela naffecte pas les autres fenêtres shell.

Si vous « avez ajouté export ALL_PROXY=… à un fichier dinitialisation, supprimez à partir de là.

Vous pouvez exécuter export sans argument pour voir quelles variables denvironnement sont définies dans le shell actuel.

Noubliez pas que pour rendre une variable shell accessible aux programmes lancés par ce shell, vous devez lexporter, soit en exécutant export VAR après laffectation VAR=VALUE ou en combinant les deux (export VAR=VALUE).

Commentaires

  • Je pense que ' nest pas indispensable que le export VAR se produise après laffectation. Observez: sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F' imprime " F2 = 2 \ nF1 = 2 ".
  • unset est également nécessaire pour effacer les tableaux bash associatifs (par exemple: bash " tables de hachage " ou " dicts "), comme lexplique ce tutoriel dans la section intitulée " Effacement ": artificialworlds.net/blog/2012/10/17/… .

Réponse

Pour annuler la définition dune variable liée dans bash, utilisez unset VARIABLE (unset ALL_PROXY dans votre cas). Cette commande supprime en fait la variable. Vous pouvez également définir la valeur dune variable sur vide par

VARIABLE= 

ou

VARIABLE="" 

La différence est que les deux dernières commandes ne suppriment pas la variable. Vous pouvez voir la différence en utilisant lindicateur -u avec set pour le forcer à traiter les variables non définies comme une erreur lors de la substitution:

/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 

Dans lexemple ci-dessus, bash se plaint de var nest pas lié (après avoir désactivé sa valeur) qui est lerreur attendue (notez que cela ne se produit pas dans la deuxième commande décho, ce qui signifie que var a une valeur qui est empty ou null).

Commentaires

  • Et si je avoir une variable dans mon fichier de script shell et je trouve ce fichier, alors comment vais-je annuler cela?
  • @Abhinav utilise unset dans le script. Idem sapplique.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *