1

我的主目录从辅助驱动器符号链接。当我在主目录中打开终端时,有时会解析符号链接,这会产生不幸的影响。~/somedir/因此我的提示从/Volumes/hdd/home/myuser/somedir/

我试图通过以下方式在 ZSH 中解决这个问题chpwd_functions

function fix_home_path() {
  cd $HOME${PWD##$(cd $HOME; pwd -P)}
}
chpwd_functions=(${chpwd_functions[@]} "fix_home_path")

显然,它不起作用,因为它会导致递归循环。

什么是正确的解决方案?

4

1 回答 1

0

两种有效的解决方案。任何一个

  1. 将您家的(官方)位置更改为/Volumes/hdd/home/myuser/somedir/. 至少在 Linux 上,变化会发生在内部/etc/passwd或类似的地方,我不确定 OSX。这应该使任何表现良好的应用程序只使用正确的目录作为主目录,其中包括 Zsh。
  2. 您也可以$HOME仅在您的 shell 中更改 的值。在~/.zshenv包括

    export HOME=/Volumes/hdd/home/myuser/somedir/

Zsh 将正确处理提示扩展。

PS:如果您希望在提示中进行花哨/奇怪的扩展,您可以定义一个函数并将其返回值包含在提示中。例如,在提示中包含日期的复杂方式:

zsh -f # new zsh with default configuration values.
setopt PROMPT_SUBST
function myfunc() { date }
export PROMPT=' \"$(myfunc)\" %~ ' # single quotes, NOT double quotes!

这将为每个提示显示调用该函数myfunc

于 2014-02-04T10:12:39.773 回答