Você precisa usar source
ou eval
ou gerar um novo shell.
Quando você executa um shell script, um novo shell child é gerado. Este shell child executará os comandos de script. O ambiente shell father permanecerá intocado por qualquer coisa que aconteça no shell child .
Existem várias técnicas diferentes para gerenciar essa situação:
-
Prepare um arquivo sourcefile contendo uma lista de comandos para
source
no shell atual:export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH
e, em seguida, fonte-lo
source sourcefile
observe que não há necessidade de um sha-bang no início do arquivo_de_origem , mas funcionará com ele.
-
Prepare um script evalfile.sh que imprima o comando para definir o ambiente:
#!/bin/sh echo "export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22" echo "export PATH=$JAVA_HOME/bin:$PATH"
e, em seguida,
eval
uate:eval 'evalfile.sh'
-
Configure e execute um novo shell:
#!/bin/sh export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH exec /bin/bash
observe que quando você digita
exit
neste shell, você retornará para o pai . -
Coloque um alias no seu
~/.bashrc
:alias prepare_environ='export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22; export PATH=$JAVA_HOME/bin:$PATH;'
e ligue quando necessário:
prepare_environ