temporário definindo o caminho em um arquivo "init"

2

Eu tenho um arquivo "init" que lê

#!/bin/sh

export PATH=$PATH:/home/me/morph_numsys/software/bin

pelo qual gostaria apenas de definir o caminho para essa pasta apenas para esta sessão bash. No entanto, quando executo o script, sh init , ele ainda não reconhece o caminho. No entanto, se eu disser export PATH=$PATH:/home/me/morph_numsys/software/bin , funcionará bem. Alguma idéia de como posso fazer isso?

Estou no Ubuntu e no xterm.

    
por Dervin Thunk 09.10.2010 / 00:22

1 resposta

8

Quando você diz "apenas para esta sessão bash", suponho que você esteja falando da sessão bash que está chamando o script.

Quando você executa seu script, ele obtém um novo ambiente de shell. Portanto, quando você exportar variáveis, estará exportando-as para o novo ambiente de shell e não para seu ambiente pai. Tanto quanto sei, não há como acessar o ambiente pai. No entanto, como você está usando o bash, pode haver algumas soluções:

Use source

Em vez de executar o script da seguinte forma: /path/to/init.sh do source /path/to/init.sh

Na página do bash man :

source filename [arguments]

Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename.

Faça do seu script uma função shell e coloque-a em .bashrc

Outra opção é tornar o init uma função e colocá-lo no .bashrc assim:

function init {
    export PATH=$PATH:/home/me/morph_numsys/software/bin
}

Em seguida, a partir do terminal, você pode executar apenas init .

    
por 09.10.2010 / 04:57