¿Cómo desarmo una variable en la línea de comando?

He probado el siguiente comando para configurar el proxy en yaourt:

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

La pregunta es cómo desarmar el proxy en yaourt. En general, ¿cómo puedo anular el valor de una variable en el shell actual?

Comentarios

  • Intente unset ALL_PROXY
  • @coffeMug también podría convertir eso en una respuesta, también podría considerar robar información de aquí: stackoverflow.com/a/12263914 / 1081936
  • además de la respuesta aceptada, si hay ' un comando que ejecuta con frecuencia y que utiliza una variable de entorno que ' Prefiero no configurar o cambiar para el resto de su sesión de shell, puede ejecutarlo como: $ ALL_PROXY=http://proxy.example.com:8080 yaourt que configurará el envvar solo para el comando ejecutar . Puede poner tantas FOO=bar BAZ=bat variables como desee antes de ejecutar el comando.

Respuesta

Para eliminar una variable de entorno, ejecute

unset ALL_PROXY 

Tenga en cuenta que una variable de entorno solo tiene efecto en un programa y el programa lanza. Si configura una variable de entorno en una ventana de shell, no afectará a otras ventanas de shell.

Si «ha agregado export ALL_PROXY=… a un archivo de inicialización, elimine desde allí.

Puede ejecutar export sin argumentos para ver qué variables de entorno están configuradas en el shell actual.

Recuerde que para que una variable de shell esté disponible para los programas iniciados por ese shell, debe exportarla, ya sea ejecutando export VAR después de la asignación VAR=VALUE o combinando los dos (export VAR=VALUE).

Comentarios

  • Creo que ' no es esencial que export VAR ocurra después de la asignación. Observe: sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F' imprime " F2 = 2 \ nF1 = 2 ".
  • unset también se requiere para borrar matrices bash asociativas (es decir: bash " tablas hash ", o " dicts "), como se explica en este tutorial en la sección titulada " Limpiando ": artificialworlds.net/blog/2012/10/17/… .

Respuesta

Para desarmar una variable vinculada en bash, use unset VARIABLE (unset ALL_PROXY en su caso). Este comando realmente elimina la variable. También puede establecer que el valor de una variable esté vacío

VARIABLE= 

o

VARIABLE="" 

La diferencia es que los dos últimos comandos no eliminan la variable. Puedes ver la diferencia usando el indicador -u con set para forzarlo a tratar las variables no configuradas como un error al sustituir:

/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 

En el ejemplo anterior, bash se queja de var no está vinculado (después de anular su valor), que es el error esperado (tenga en cuenta que esto no sucede en el segundo comando de eco, lo que significa que var tiene un valor que es empty o null).

Comentarios

  • ¿Qué pasa si tengo una variable en mi archivo de script de shell y obtengo ese archivo, entonces, ¿cómo voy a desarmarlo?
  • @Abhinav use unset en el script. Mismo aplica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *