加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:24:30 所属栏目:安全 来源:网络整理
导读:在bash中,我通过这一行获取执行脚本的父文件夹名称 SCRIPT_PARENT=`readlink -f ${BASH_SOURCE%/*}/..` 有没有办法在zsh中以zsh和bash的方式实现这一点? 假设我有一个文件/ some / folder / rootfolder /子文件夹/脚本及其内容: echo `magic-i-am-looking-
在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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读