我喜欢使用 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 参数的名称,并且其值以
/