ctrl+yで切断される問題

MacでSession Managerによるリモートログイン時にctrl+yを入力するとセッションが切断される。

$ aws ssm start-session --target i-xxxxxxxxxxxxxxxxx
Starting session with SessionId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sh-4.2$ ← ここで ctrl+y を入力
sh-5.2$ Cannot perform start session: read /dev/stdin: resource temporarily unavailable
$ ← ローカルのシェルに戻る

ctrl+yctrl+kctrl+wなどでカットした文字列を貼り付けるため(yank)に手癖として使ってしまうので、 不意にセッションが切断されると不便。

ctrl+yで切断されないようにする

接続元のシェルで以下のコマンドを実行する。

$ stty dsusp undef

参考: Problem interpreting signals emitted by terminal on BSD systems properly · Issue #29 · aws/session-manager-plugin

この設定をおこなうと、Session Manager接続先のシェルでctrl+yを入力してもセッションが切断されなくなる。
さらに、ctrl-yによるyank機能も復活する。

シェル起動時に設定する

~/.bashrc~/.zshrcなどのシェルの設定ファイルでstty dsusp undefを実行するようにしておく。

# bash の場合
$ echo 'stty dsusp undef' >> ~/.bashrc

# zsh の場合
$ echo 'stty dsusp undef' >> ~/.zshrc