Bash 中是否有一种简单的方法来检测当前工作目录的变化?我想每次使用cd
命令导航时更改窗口标题。我想在控制台窗口的标题中包含存储库的目录名称。如果 CWD 不是存储库,则标题可以为空。
例如:
cd Documents/Repositories # after this line I want window title to be empty ''
cd repository1 # after this line I want window title to be 'repository1'
cd .. # after this line I want window title to be empty ''
cd repository2 # after this line I want window title to be 'repository2'
有没有办法检测CWD何时更改(有点像事件处理程序(?
你可以做的是覆盖~/.profile
中的 cd 函数并向其添加更多解析:
PROMPT_COMMAND='echo -ne " 33]0;${MYDIR} 07"'
function cd {
MYDIR="${1:-${HOME}}"
builtin cd "${MYDIR}"
# ADD PARSING HERE
}
但我建议不要这样做,因为无论您是否导航到..
,您可能都希望将目录作为标题。我建议显示当前目录的最后 30 个字符:
PROMPT_COMMAND='echo -ne " 33]0;..${PWD: -30} 07"'
您可以在此处阅读有关不同贝壳的信息。