Você não pode, não há como desfazer. Salve o valor em outra variável (ou em um arquivo ou onde você quiser) se quiser disponibilizá-lo mais tarde.
old_DISPLAY=$DISPLAY
unset DISPLAY
…
DISPLAY=$old_DISPLAY
Se você deseja executar um único comando sem a variável de ambiente, use env
.
env -u DISPLAY emacs
Você também pode usar a sintaxe VAR=VALUE COMMAND
para definir a variável de ambiente VAR
para o valor especificado apenas para esse comando.
$ echo $DISPLAY
:0
$ DISPLAY=:1 xterm & # shows the xterm window on display :1
$ echo $DISPLAY
:0
Você não pode cancelar a configuração de uma variável dessa maneira, mas pode defini-la como um valor vazio, o que geralmente é bom o suficiente.
Você também pode manter as alterações locais em um subshell. Parênteses delimitam comandos para executar em uma subcamada.
$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR
$ (export FOO=other_value; unset BAR; env | grep -E 'FOO|BAR')
FOO=other_value
$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR
Você pode executar um shell separado com um ambiente diferente. Digite exit
ou Ctrl + D para retornar ao shell pai.
$ bash
$ # change the environment, change directories, etc.
$ exit
$ # now you're back to the parent shell with its environment as you left it