在bash中,我通过这一行获取执行脚本的父文件夹名称
SCRIPT_PARENT=`readlink -f ${BASH_SOURCE%/*}/..`
有没有办法在zsh中以zsh和bash的方式实现这一点?
假设我有一个文件/ some / folder / rootfolder /子文件夹/脚本及其内容:
echo `magic-i-am-looking-for`
我希望它以这种方式表现:
$cd /some/other/folder $. /some/folder/rootfolder/subfolder/script /some/folder/rootfolder $. ../../folder/rootfolder/subfolder/script /some/folder/rootfolder $cd /some/folder/rootfolder $. subfolder/script /some/folder/rootfolder $cd subfolder $. script /some/folder/rootfolder
这应该在bash和zsh中工作.我的第一个实现了这种行为,但由于$BASH_SOURCE在zsh中不起作用.
所以基本上它:
有没有办法在zsh中模拟$BASH_SOURCE,这也适用于bash?
我现在意识到zsh中的$0在bash中表现得像$BASH_SOURCE.所以在可用时使用$BASH_SOURCE并回落到$0解决了我的问题:
${BASH_SOURCE:-$0}
当从$PATH采购时,还有一个小的zsh边缘情况:
zsh> cat ../script echo \$0: $0 echo \$BASH_SOURCE: $BASH_SOURCE echo '${BASH_SOURCE:-$0}:' ${BASH_SOURCE:-$0} zsh> . script $0: script $BASH_SOURCE: ${BASH_SOURCE:-$0}: script bash> . script $0: bash $BASH_SOURCE: /home/me/script ${BASH_SOURCE:-$0}: /home/me/script
我可以做一个哪个脚本,但这对其他情况不会很好