¿Quiero saber cómo borrar todas las variables que definí en el símbolo del sistema sin cerrar el terminal?
por ejemplo, si configuro una variable en el símbolo del sistema como:
$ a=1
ahora quiero eliminar la variable $a
(y muchas otras variables definidas de manera similar) sin cerrar el terminal. Podría usar, unset
pero será agitado si hay grandes no. de variables
shell
environment-variables
Edward Torvalds
fuente
fuente
exec "$0"
tal vez, pero es difícil decir qué quiere decir con global .$var
con yvar=$(declare -p +F);
luego la pasa como un argumento a una función que sí.echo "${2%%=*}".
Esa respuesta tiene algunos problemas con el tamaño, pero debería funcionar si su entorno no es enorme.Respuestas:
Si lo hace (GNU coreutils)
usarás un ambiente nuevo y fresco
fuente
exec "$0"
?$0
es el argumento cero para un shell ejecutado. Entonces, si está ejecutandobash
$0
esbash
(probablemente, podría estar-bash
en un-l
caso de shell ogin dependiendo de la versión) . Si está ejecutando un script con un punto de#!/bin/bash
referencia,$0
es la ruta al script.exec "$0"
es probablemente más flexible, peroexec bash
es más explícito. Si ingresa ese comando en una terminal,bash
debe reconocer que está en un entorno interactivo y hacer el equivalente debash -i
- lo que hará que su~/.bashrc
archivo también se ejecute.export a=123
, esa variable se hereda ...Puede usar
env
, que es proporcionado por GNU coreutils (generalmente preinstalado en sistemas GNU / Linux):exec env --ignore-environment /bin/bash
La llamada al sistema ejecutivo es para que su proceso actual sea reemplazado en el lugar por la nueva versión de su shell sin entorno.
Esto tiene el beneficio de borrar también cualquier variable de entorno exportada .
fuente
export PATH=$PATH:~/foo
, ¿verdad?