$0 в этом случае указывает на командную оболочку, а не на скрипт. BASH_SOURCE есть не во всех версиях.
Какие-нибудь еще переносимые варианты бывают?
Здравствуйте, Аноним, Вы писали:
А>$0 в этом случае указывает на командную оболочку, а не на скрипт. BASH_SOURCE есть не во всех версиях.
А>Какие-нибудь еще переносимые варианты бывают?
Пользую такое:
if (( ${BASH_LINENO[0]} > 0 )); then
ScriptFilePath="${BASH_SOURCE[1]//\\//}"
else
ScriptFilePath="$0"
fi
if [[ "${ScriptFilePath:1:1}" == ":" ]]; then
ScriptFilePath="`/bin/readlink.exe -f "/${ScriptFilePath/:/}"`"
else
ScriptFilePath="`/bin/readlink.exe -f "$ScriptFilePath"`"
fi
ScriptDirPath="${ScriptFilePath%[/]*}"
ScriptFileName="${ScriptFilePath##*[/]}"
ScriptBaseFileName="${ScriptFileName%.*}"
заодно и пути приводятся к униформным
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]