Bash: altera o ambiente temporariamente

1

Estou usando uma ferramenta dev que fornece um script que define variáveis de ambiente. Se eu fornecer o script, o ambiente será modificado durante a secessão bash. Para reverter as alterações feitas por esse script, preciso reiniciar o terminal. Existe uma maneira de fazer isso sem reiniciar ou abrir a nova sessão bash?

Obrigado.

    
por pic11 05.05.2011 / 01:37

1 resposta

1

Faça isso em uma subshell:

$ (. /path/to/envsetup.sh; runtool)

Se houver apenas algumas alterações de ambiente, você poderá fazê-las na linha de comando:

$ FOO=a BAR=b runtool # FOO and BAR will be set only for runtool

Você também pode usar um subshell real se antecipar várias coisas:

$ bash
$ : this is a subshell
$ . /path/to/envsetup.sh
$ thing1
$ thing2
$ : ...
$ exit
$ : this is the original shell

Você pode querer incluir $SHLVL no seu $PS1 para o último, então é mais fácil dizer que você está em um subshell. Eu também verifico uma variável de ambiente (não padrão) $PSYS e imprimo se definida, como uma espécie de "rótulo" para o ambiente.

    
por geekosaur 05.05.2011 / 01:41