如何将 hash -d 目录导出到脚本?

如何将 hash -d 目录导出到脚本?

我喜欢使用 hash -d。我想在脚本中使用散列目录。

例子:

#!/usr/bin/env zsh
echo $SHLVL
hash -d 
echo "+++++++"
ls ~dd

跑步:

hash -d dd=/tmp
hash -d 
echo "-----"
./example

将打印出来

dd=/tmp
-----
2
+++++
./example: no such user or named directory: ~dd

但是,函数可以正常工作:

#!/usr/bin/env zsh
function example() {
  hash -d
  cd ~dd
}

当然,快速检查$SHLVL显示作为脚本调用的脚本具有较低的 shell 级别。使用变量,我可以执行export使这些变量可用。如何对hash -d

答案1

只需使用

export dd=/foo/bar

您不需要hash -d明确调用。~something如果它扩展为命名目录,则使用启发式方法(参见静态命名目录在里面韋什麼意思手册页)是否。这是最重要的部分

如果 ~ 后面的文本是字符串 shell 参数的名称,并且其值以/

相关内容