Либо то, что я здесь спрашиваю, крайне неортодоксально / нетрадиционно / рискованно, либо мои навыки в Google-фу просто не подходят к нулю ...
В bash
сценарии оболочки есть какой-нибудь простой способ узнать, получен ли он от другого сценария оболочки, или он запускается сам по себе? Другими словами, возможно ли различить следующие два поведения?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Я думаю о том, чтобы создать подобный утилитам сценарий оболочки, содержащий bash
функции, которые можно сделать доступными при получении. Когда этот скрипт запускается сам по себе, мне бы хотелось, чтобы он выполнял определенные операции, также основываясь на определенных функциях. Существует ли какая-то переменная окружения, которую может использовать этот сценарий оболочки, например
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Предпочтительно, я ищу решение, которое не требует скрипта вызывающей стороны для установки каких-либо флаговых переменных.
редактировать : я знаю разницу между поиском и запуском скрипта, что я пытаюсь выяснить здесь, возможно ли определить разницу в скрипте, который используется (в обоих направлениях).
.
команде, а о том, чтобы определить, был ли скрипт поставлен или работает нормально (т.е. в подоболочке).