当前工作目录更改的 Bash 事件处理程序



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"'

您可以在此处阅读有关不同贝壳的信息。

最新更新