Existe uma maneira de obter o caminho de um script bash quando usado no comando source

4

Eu quero definir uma variável de ambiente relativa à localização de um script. Eu posso facilmente encontrar e configurá-lo para a duração do script (test.sh):

#!/bin/bash
export MY_VARIABLE=$(dirname $0)
echo MY_VARIABLE is : $MY_VARIABLE

Ligue:

./test.sh

Saída:

MY_VARIABLE is : .

Se eu quiser usar a variável em outros scripts, preciso configurá-la com o comando de origem. Obviamente, isso não está funcionando porque agora não estou chamando o script test.sh, mas o comando de origem.

source test.sh

Saída:

dirname: illegal option -- b
usage: dirname path
MY_VARIABLE is :

Existe uma maneira de definir uma variável de ambiente em um script que pode ser usado com o comando de origem?

    
por Sacha Guyer 07.04.2014 / 12:40

1 resposta

2

test2.sh:

#!/bin/bash
MY_VARIABLE=$(PWD)/$(dirname $BASH_SOURCE)
echo MY_VARIABLE is : $MY_VARIABLE

Ligue:

./test2.sh

Saída:

MY_VARIABLE is : /some/path/.

Ligue:

source ./test2.sh

Saída:

MY_VARIABLE is : /some/path/.

Obrigado @webmark e @GordonDavisson.

    
por 26.02.2015 / 21:13