bashシェルのように、シェルを終了するためにkshでキーをマッピングする方法Ctrlを知りたいです。D
kshのキーバインディングに慣れていません。
編集する
以下の私のコメントをご覧ください。
$ echo $0
bash
$ exit # I pressed Ctrl-D here, 'exit' string was placed and the shell exited
$> echo $0
ksh
$> Use 'exit' to leave ksh # I pressed Ctrl-D here, Got this message and returned to the ksh prompt
$> echo $0
ksh
$> cat >> somefile
Some text
$> # I pressed Ctrl-D here. So this key combination is taken as eof char for file, but not for exit.
もしそうなら、シェルを終了するにはマッピングが必要ですかCtrl?Dどうすればいいですか?
答え1
Ctrl+ D(ASCII EOT
)すでにマニュアルページの説明に従って、モードvi
とemacs
モードでシェルをシャットダウンするようにマッピングします。ksh93
スクリプトのキャプチャを見ると、これは明らかな事実です。
マニュアルページはまた、他の人がここで言及した内容、つまり行が空のときだけキーがこの効果を持つことを説明します。 (これはクッキングモードでのライントレーニングの標準的な動作を模倣します。)
あなたが見逃したのは、(マンページでも説明されている)対応するignoreeof
オプションを設定したことです。したがって、Korn Shellは空白行でCtrl+を表示Dおよび無視し、ignoreeof
設定が開いているときにそのコマンドを明示的に使用する必要があることを示すメッセージを印刷しますexit
。
したがって、stty
他の答えと同様に、ハンドラを忘れてキャプチャします。
set -o noignoreeof
追加読書
- Ctrl + Dでセッションが切断されるのを防ぐ方法は?- 反対の効果を得るための質問には反対の答えがあります。
答え2
欲しいstty
コマンド:^ Dがどのようにマップされているかを確認してくださいstty -a
。他のものに変更することができますstty eof char
。 「eof」設定を削除してください。stty eof undef
trap
テストされていません:コマンドのkshのマニュアルページを読みたいです。信号のハンドラを設定するだけで十分ですEXIT
。
# warning: completely untested
exit_handler() { echo "exit"; exit; }
trap exit_handler EXIT