由于 PROMPT_COMMAND 修改,使用 exit 命令结束登录会话时会冻结

由于 PROMPT_COMMAND 修改,使用 exit 命令结束登录会话时会冻结

我最近alert在我的命令中嵌入了一个“”命令PROMPT_COMMAND,给我一个小屏幕通知,其中包含每个命令的退出代码(因为我总是忘记在启动长时间运行的作业时notify-send附加)。alert

这就像一个魅力,但后来我发现了一个小麻烦:

当我通过 slogin 连接到网络中的另一台计算机并想要与 断开连接时exit,它会显示“注销”,然后就坐在那里。当我按 [ctrl]+[c] 时,它会毫无问题地返回到我的本地会话。我发现如果我alert在所有 SSH 会话中去掉“auto-”,问题就会消失。这没什么大不了的,但我只是想知道发生了什么,如果可能的话,也许如何解决它。

这是命令(在我的别名中):

alias alert='notify-send --urgency=low -i "$([ $? -eq 0 ] && echo terminal || echo error)" "$(history 1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

这是在我的 .bashrc 中:

if [[ "$PROMPT_COMMAND" != alert* ]]; then # && ([ -z "$SSH_CLIENT" ] || [ -z "$SSH_TTY" ]); then
  PROMPT_COMMAND="alert; $PROMPT_COMMAND"
fi

如果我将注释添加到该行(remove ; then #),则登录会话会立即退出,不会出现问题(当然,也不会通知我长时间运行的作业结束)。

相关内容