У меня есть файл bash, src-useful.bash
, содержащий полезные функции, такие как say_hello()
, расположенный в /path /to / полезно.
В моем ~/.bash_profile
я добавил следующие строки:
export BASH_USEFUL=/path/to/useful
source $BASH_USEFUL/src-useful.bash
Открывая новый терминал, я могу проверить следующее:
$ echo $BASH_USEFUL
/path/to/useful
$ cat $BASH_USEFUL/src-useful.bash
function hello() {
echo "hello!"
}
$ hello
hello!
Я создал скрипт, say_hello.sh
:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognizsed
say_hello.sh: line 2: say_hello: command not found # Not recognized?
Если я $BASH_USEFUL/src-useful.bash
в say_hello.sh
он будет работать:
$ cat say_hello.sh
echo "BASH_USEFUL: $BASH_USEFUL"
source $BASH_USEFUL/src-useful
say_hello
$ ./say_hello.sh
BASH_USEFUL: /path/to/useful # Recognized
hello! # Function say_hello is now recognized
Я хотел бы знать, почему переменная BASH_USEFUL
все еще распознается моим сценарием, а функции из моего исходного файла не могут быть видны в среде моим запущенным сценарием. Есть ли обходной путь, кроме поиска моего src-useful.bash
в моих скриптах? Я бы хотел, чтобы функции src-useful.bash
загружались в среде любого запускаемого мной скрипта.