如何檢測腳本是否來源我有一個(gè)腳本,exit如果它被采購我不希望它調(diào)用。我想過檢查是否$0 == bash但如果腳本來自另一個(gè)腳本,或者如果用戶從不同的shell中獲取它,則會出現(xiàn)問題ksh。是否有可靠的方法來檢測腳本是否來源?
3 回答

慕斯王
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
這似乎可以在Bash和Korn之間移植:
[[ $_ != $0 ]] && echo "Script is being sourced" || echo "Script is a subshell"
與此類似的行或類似的賦值pathname="$_"
(以及稍后的測試和操作)必須位于腳本的第一行或shebang之后的行(如果使用的話,應(yīng)該是ksh以便它可以在大多數(shù)情況)。

一只名叫tom的貓
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您的Bash版本知道BASH_SOURCE數(shù)組變量,請嘗試以下方法:
# man bash | less -p BASH_SOURCE
#[[ ${BASH_VERSINFO[0]} -le 2 ]] && echo 'No BASH_SOURCE array variable' && exit 1
[[ "${BASH_SOURCE[0]}" != "${0}" ]] && echo "script ${BASH_SOURCE[0]} is being sourced ..."
添加回答
舉報(bào)
0/150
提交
取消