我的主目录符号链接来自辅助驱动器。当我在主目录中打开终端时,这有时会解析符号链接,这会产生不幸的影响。因此,我的提示从~/somedir/
转到/Volumes/hdd/home/myuser/somedir/
我试图通过使用chpwd_functions
来解决这个问题:
function fix_home_path() {
cd $HOME${PWD##$(cd $HOME; pwd -P)}
}
chpwd_functions=(${chpwd_functions[@]} "fix_home_path")
显然,它不起作用,因为它会导致递归循环。
什么是正确的解决方案?
答案 0 :(得分:0)
两种有效的解决方案。任
/Volumes/hdd/home/myuser/somedir/
。至少在Linux上,更改会发生在/etc/passwd
内或类似的地方,我不确定OSX。这应该使任何表现良好的应用程序只使用正确的目录作为主页,并包括Zsh。您也可以仅在shell中更改$HOME
的值。在~/.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
。