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 我可以做一个哪个脚本,但这对其他情况不会很好 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |