bash – 如何在zsh中获取执行脚本的父文件夹?

前端之家收集整理的这篇文章主要介绍了bash – 如何在zsh中获取执行脚本的父文件夹?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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

我可以做一个哪个脚本,但这对其他情况不会很好

猜你在找的Bash相关文章