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
sourceno shell atual:export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATHe, em seguida, fonte-lo
source sourcefileobserve 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,
evaluate: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/bashobserve que quando você digita
exitneste 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