¿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, unsetpero 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 .$varcon 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"?$0es el argumento cero para un shell ejecutado. Entonces, si está ejecutandobash$0esbash(probablemente, podría estar-bashen un-lcaso de shell ogin dependiendo de la versión) . Si está ejecutando un script con un punto de#!/bin/bashreferencia,$0es la ruta al script.exec "$0"es probablemente más flexible, peroexec bashes más explícito. Si ingresa ese comando en una terminal,bashdebe reconocer que está en un entorno interactivo y hacer el equivalente debash -i- lo que hará que su~/.bashrcarchivo 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/bashLa 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?