Comment désélectionner une variable en ligne de commande?

80

J'ai essayé la commande suivante pour activer le proxy yaourt:

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

La question est de savoir comment désélectionner le proxy yaourt? En général, comment puis-je supprimer la valeur d'une variable dans le shell actuel?

Hamed Kamrava
la source
7
Essayezunset ALL_PROXY
coffeMug
@coffeMug pourrait aussi bien en faire une réponse, vous pouvez également envisager de voler des informations à partir d'ici: stackoverflow.com/a/12263914/1081936
terdon
en plus de la réponse acceptée, si vous exécutez souvent une commande qui utilise une variable d'environnement que vous ne souhaitez ni définir ni modifier pour le reste de votre session shell, vous pouvez l'exécuter comme $ ALL_PROXY=http://proxy.example.com:8080 yaourtsuit : cela définira la variable d'environnement uniquement commande exécuter. Vous pouvez définir autant de FOO=bar BAZ=batvariables que vous le souhaitez avant l'exécution de la commande.
onlynone

Réponses:

113

Pour supprimer une variable d'environnement, exécutez

unset ALL_PROXY

Notez qu'une variable d'environnement ne prend effet que dans un programme et le programme qu'il lance. Si vous définissez une variable d'environnement dans une fenêtre de shell, cela n'affecte pas les autres fenêtres de shell.

Si vous avez ajouté export ALL_PROXY=…à un fichier d'initialisation, supprimez-le.

Vous pouvez exécuter exportsans argument pour voir quelles variables d'environnement sont définies dans le shell actuel.

N'oubliez pas que pour rendre une variable shell disponible pour les programmes lancés par ce shell, vous devez l'exporter, soit en exécutant export VARaprès l'affectation, VAR=VALUEsoit en combinant les deux ( export VAR=VALUE).

Gilles, arrête de faire le mal
la source
19

Désactiver une variable liée en bash unset VARIABLE( unset ALL_PROXYdans votre cas). Cette commande supprime réellement la variable. Vous pouvez également définir la valeur d'une variable à vider 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 le -udrapeau avec setpour le forcer à traiter les variables non définies comme une erreur en remplaçant:

/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 l'exemple ci-dessus, bash se plaint de varne pas être lié (après avoir défini sa valeur), ce qui correspond à l'erreur attendue (notez que cela ne se produit pas dans la deuxième commande echo, ce qui signifie que varsa valeur est emptyou null).

coffeMug
la source
Que se passe-t-il si j'ai une variable dans mon fichier de script shell et que je source ce fichier, alors comment vais-je le désélectionner?
Abhinav
@Abhinav utiliser unsetdans le script. La même chose s'applique.
coffeMug