我最近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 #
),则登录会话会立即退出,不会出现问题(当然,也不会通知我长时间运行的作业结束)。