答案1
在 OS X 上,默认情况下,Bash 配置为在每个提示符下使用转义序列将当前工作目录传达给终端,并使用PROMPT_COMMAND
环境变量。
在 OS X El Capitan 10.11 之前,此代码位于/etc/bashrc
。在 10.11 及更高版本中,它已被移至终端特定/etc/bashrc_Apple_Terminal
文件并/etc/bashrc
执行相应的终端特定文件。
当前版本哦我的天啊!有类似的代码将工作目录传达给终端。
最有可能停止工作的原因是您更改了配置。也许您之前使用过 Bash,或者安装了 Oh My Zsh,但现在没有。另一种可能是,您以前将 shell 配置为将终端窗口或选项卡(又称“图标”)标题设置为包含工作目录路径名:为了方便旧配置,如果未明确设置工作目录,但窗口或选项卡标题包含有效的本地路径名,则终端会将其视为当前工作目录。
答案2
确保 Terminal.app 的“新窗口/选项卡打开方式:相同的工作目录”选项在 zsh 作为登录 shell 时仍然有效的一种简单方法是指示 zsh 通过转义序列将当前工作目录中的更改传达给 Terminal.app。我在我的.zshrc
系统中这样做了:
# tell terminal.app about cwd so new tabs open in same dir
tell_terminal_cwd() {
cwd=$(print -rD $PWD)
echo -ne "\033]0;${cwd}\007"
}
precmd_functions+=(tell_terminal_cwd)
Terminal.app 关于此主题的说明说,将当前工作目录提供为正确编码的 file:// URL(包括主机名),但我发现上述方法运行良好,并且在选项卡标题中看起来也不错。
答案3
像你一样,我想在不加载的情况下执行此操作全部的 Oh-My-Zsh。
事实证明,截至 4e306887 左右(为什么 OMZ 似乎没有“版本”的概念!?糟糕的软件开发实践。ಠ_ಠ),他们包含的文件会为您处理这个问题。您还termsupport.zsh
必须删除该文件。functions.zsh
就我个人而言,我使用超轻量级(例如,我读全部在开始使用它之前,请先阅读代码,因为它是一个≤500行的文件)Zgen.zsh
。 (它明确支持使用 OMZ 模块等,而无需加载 OMZ 的其余部分!)如果您选择这样做,以下是解决方案:
if ! zgen saved
...
# Steal omz's termsupport for Apple Terminal. (Hacky; will have to
# watch to see if this changes.) - <http://superuser.com/a/1031708/22030>
zgen load robbyrussell/oh-my-zsh lib/functions.zsh
zgen load robbyrussell/oh-my-zsh lib/termsupport.zsh
...
fi