我为您提供了一些答案:)您说对了,使用gnome-
terminal无关紧要,但是使用什么命令外壳都没有关系。在中
zsh,这要容易得多,但是在接下来的内容中,我将假设您正在使用
bash,并且它是一个相当新的版本(>
3.1)。
首先:
哪个环境变量将包含当前的“命令”?
有一个环境变量,它或多或少具有您想要的-
$BASH_COMMAND。只有一个小障碍,那就是它只会向您显示管道中的最后一条命令。我不是100%不确定子壳组合会做什么:)
所以我希望找到一种方法来捕获bash中的命令并在每个命令之后更新标题。
我一直在考虑这个问题,现在我了解了您想做什么,我意识到真正的问题是您需要 在 每个命令 之前
更新标题。这意味着
$prompt_COMMANDand
$PS1环境变量是不可能的解决方案,因为它们仅 在 命令返回 后 执行。
在中
bash,我可以想到的唯一实现目标的方法是(ab)使用DEBUG SIGNAL。所以这是一个解决方案-将此粘贴在您的末尾
.bashrc:
trap 'printf " 33]0;%s 07" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG为了解决管道问题,我一直在弄乱这个问题:
function settitle () { export PREV_COMMAND=${PREV_COMMAND}${@} printf " 33]0;%s 07" "${BASH_COMMAND//[^[:print:]]/}" export PREV_COMMAND=${PREV_COMMAND}' | '}export prompt_COMMAND=${prompt_COMMAND}';export PREV_COMMAND=""'trap 'settitle "$BASH_COMMAND"' DEBUG但我不保证它是完美的!



