Прямо к точке: вы должны оценить, равна ли переменная "$ 0" названию вашей оболочки.
Примерно так:
#!/bin/bash
echo "First Parameter: $0"
echo
if [[ "$0" == "bash" ]] ; then
echo "The script was sourced."
else
echo "The script WAS NOT sourced."
fi
Через SHELL :
$ bash check_source.sh
First Parameter: check_source.sh
The script WAS NOT sourced.
Через SOURCE :
$ source check_source.sh
First Parameter: bash
The script was sourced.
Довольно трудно иметь 100% переносимый способ определения, был ли скрипт получен или нет.
Относительно моегоопыт работы (7 лет с Shellscripting) , единственный безопасный способ (не полагаясь на переменные окружения с PID и т. д., который небезопасен из-за того, что это что-то VARIABLE ), вы должны:
- расширить возможности вашего
- , используя переключатель / чехол, если хотите.
Оба варианта не могут быть автоматически масштабированы, но это более безопасный способ.
Например:
при создании сценария через сеанс SSH значение retЗначение переменной "$ 0" (при использовании source ) равно -bash .
#!/bin/bash
echo "First Parameter: $0"
echo
if [[ "$0" == "bash" || "$0" == "-bash" ]] ; then
echo "The script was sourced."
else
echo "The script WAS NOT sourced."
fi
ИЛИ
#!/bin/bash
echo "First Parameter: $0"
echo
if [[ "$0" == "bash" ]] ; then
echo "The script was sourced."
elif [[ "$0" == "-bash" ]] ; then
echo "The script was sourced via SSH session."
else
echo "The script WAS NOT sourced."
fi