control + dがセッションを切断しないようにするにはどうすればよいですか?


26

私は定期的にcentos 5ボックスにsshします。どういうわけか、キーはマップされているためcontrol+d、現在のシェルからログアウトされます。別の用途にsudoされた場合、前のユーザーに戻ります。私がsudoされていない場合は、単に切断されます。どうすればこれを防ぐことができますか?私は定期的にcontrol + dを使用してpythonインタープリターをキャンセルし、時々誤ってそれを複数回押します。


csh、あなたはset ignoreeof
トレバーボイドスミス

回答:


32

以下IGNOREEOFを使用する場合、環境変数を探していますbash

IGNOREEOF

EOF文字を唯一の入力として受け取ったときの対話型シェルのアクションを制御します。設定されている場合、値は、bashが終了する前に入力行の最初の文字として入力する必要がある連続したEOF文字の数です。変数は存在するが、数値を持たない場合、または値を持たない場合、デフォルト値は10です。変数が存在しない場合、EOFはシェルへの入力の終了を示します。

そのため、実際にシェルを終了する前に、42回export IGNOREEOF=42押す必要がありますCtrl+D

POSIX setにも-o ignoreeof設定があります。したがって、シェルのドキュメントを参照して、シェルにこれがあるかどうかを確認し(必要な場合)、正確なセマンティクスを確認してください。


少なくとも、Ubuntuでは「exitを使用してシェルを終了する」というメッセージが表示されます。ユーザーにsuされたとしても、おそらく親ユーザーがルートレベルである場合は、不注意でそれを残したくないでしょう。
Fiasco Labs

1
私は個人的にそれが本当に迷惑だと思うので、どこにも設定しません。その動作を無効にしようとしたときにこれらについて発見しました:)
マット

2
私は、つまらないことに抵抗することはできません。IGNOREEOFEOFが最終的に受け入れられる前に無視される回数です。そのため、上記の例では、もしあなたがexport IGNOREEOF=42CONTROL-Dを43回押して終了する必要があります。42回ではありません。
Alvin Thompson


0

が本当に好きではない場合は、ターミナルコントロールの文字をCtrl-d削除できeofます。

stty eof undef

この後、Cntl-d他の制御キャラクターになります。


1
私はbashを備えた端末(urxvt)とプレーンコンソールで試しましたが、うまくいきませんでした。
マット

うーん...それはかつて働いていたとドキュメントはまだそれを言うと。別の方法は、<kbd> Ctrl-[</ kvd>を使用することです。
アルケージュ

2
これにより、Pythonが終了しなくなります。
psusi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.