У меня есть скрипт, который завален вокруг моей файловой системы (побочный эффект процесса сборки), который устанавливает некоторые глобальные переменные среды (LD_LIBRARY_PATH, PATH, ROOTDIR и т. Д.), Которые должны быть в моей оболочке для правильной работы. Конечно, это означает, что мне нужно source script.sh
или же . script.sh
заставить его работать, а не ./script.sh
(который породил бы новую оболочку и не установил бы переменные в моей текущей оболочке).
Есть ли что-нибудь, что я могу добавить к сценарию? предотвращать (или предупредить) кто-то работает ./script.sh
?
Чтобы обнаружить случаи, когда скрипт вызывается из другого каталога, вы должны использовать
basename
на обоих,$0
а также${BASH_SOURCE[0]}
, Понятно, что это башизм, поэтому другие оболочки должны измениться${BASH_SOURCE[0]}
к соответствующей переменной.источник
Другим вариантом может быть удаление разрешений на выполнение. В этом случае он не может быть выполнен, но он все еще может быть получен.
источник
Создать пользовательский переводчик
source_reminder
:Не забудьте сделать его исполняемым. Затем просто используйте его в своем исполняемом скрипте:
Теперь, если вы запустите скрипт без поиска источников, напоминание выполнит свою работу.
источник