PROMPT_COMMAND 変更のために終了コマンドを使用してログインセッションを終了すると、ログインセッションは停止します。

PROMPT_COMMAND 変更のために終了コマンドを使用してログインセッションを終了すると、ログインセッションは停止します。

私は最近、各コマンドの終了コードを含む小さな画面通知を提供するalert""コマンドを私のコマンドに含めましたPROMPT_COMMAND(長期実行ジョブを開始したときに常に追加することを忘れてしまったためnotify-send)。alert

これは魅力のように働いたが、いくつかの問題を発見した。

ネットワーク上の他のコンピュータにログインして接続を切断しようとすると、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 #)、ログインセッションは問題なく直ちに終了します(もちろん、長期実行ジョブが終了したという通知もありません)。

関連情報