4

Я хочу установить переменную окружения относительно местоположения скрипта. Я могу легко найти и установить его на время работы скрипта (test.sh):

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

Вызов:

./test.sh

Выход:

MY_VARIABLE is : .

Если я хочу использовать переменную в других сценариях, мне нужно установить ее с помощью команды source. Это, конечно, не работает, потому что я сейчас вызываю не скрипт test.sh, а команду source.

source test.sh

Выход:

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

Есть ли способ определить переменную среды в сценарии, которую затем можно использовать с исходной командой?

1 ответ1

2

test2.sh:

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

Вызов:

./test2.sh

Выход:

MY_VARIABLE is : /some/path/.

Вызов:

source ./test2.sh

Выход:

MY_VARIABLE is : /some/path/.

Спасибо @webmark и @GordonDavisson.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .