У меня есть мой основной скрипт, который получает файл Bash в той же папке:
$ cd
$ mkdir mysrc && cd mysrc
$ echo -e 'MY_LIB_NB=123987' > mylib.sh
$ echo -e '#!/usr/bin/env bash\nsource mylib.sh\necho "My lib number: $MY_LIB_NB"\necho "I am in $(pwd) and I am running script $(readlink -f $0)"' > myscript.sh
$ chmod +x myscript.sh
$ ./myscript.sh
My lib number: 123987
I am in /home/me/mysrc and I am running script /home/me/mysrc/myscript.sh
Все идет нормально. Теперь я связываю скрипт с папкой bin и запускаю ее оттуда:
$ mkdir bin
$ ln -s $HOME/mysrc/myscript.sh $HOME/mysrc/bin/myscript
$ cd bin
$ ./myscript
./myscript: line 2: mylib.sh: No such file or directory
My lib number:
I am in /home/me/mysrc/bin and I am running script /home/me/mysrc/myscript.sh
Я хотел бы, чтобы мои оригинальные сценарии исходных файлов, расположенных в их папке. Есть ли простой способ сделать это, без необходимости явно указывать абсолютные пути к файлу библиотеки?