variável PATH não pode ser modificada na função shell

1

Eu tenho uma função comum chamada SetEnv em um arquivo chamado SetEnv .

Arquivo SetEnv :

SetEnv()
{    
export PATH=$PATH:$JAVA_HOME/bin
}

Arquivo Script.sh :

SetEnv

echo $PATH

Ao executar ./Script.sh , não consigo ver o caminho atualizado.

Por favor, ajude como resolver isso.

    
por Sundar 08.10.2013 / 20:09

1 resposta

1

Isso porque, quando você executa um script a partir do terminal, isso não é executado no terminal atual do shell, mas em uma subcamada. As variáveis, funções e aliases criados neste subshell são conhecidos apenas para a sessão bash específica dessa sub-camada. Quando esse shell sai e o pai recupera o controle, tudo é limpo e todas as alterações no estado do shell feitas pelo script são esquecidas.

Para evitar isso, você pode criar o script no terminal atual, usando o seguinte comando:

source Script.sh

ou simples:

. Script.sh          #dot, space and the path to the script

Além disso, seu Script.sh deve se parecer com:

#!/bin/bash

source /path/to/SetEnv  #if you want that your script to know about 'SetEnv' function.

SetEnv

echo $PATH

Mais sobre: link .

    
por Radu Rădeanu 08.10.2013 / 20:43