web-dev-qa-db-ja.com

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

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

25
cwd

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

IGNOREEOF

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

そう export IGNOREEOF=42と押す必要があります Ctrl+D シェルが実際に終了する前に42回。

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

31
Mat

tcsh set ignoreeofまたはset ignoreeof=<any value not 1>機能

2
codesoar

本当に嫌いなら Ctrl-d、次に、ターミナルコントロールのeof文字を削除できます。

stty eof undef

この後、 Cntl-d 他の制御文字になります。

1
Arcege

バグ

私が使用した場合、同様の問題がありました Ctrl+D デバッグし、意図的にタブ全体を閉じたときよりも1回多く使用しました。


環境変数を使用した提案

一時的(現在のセッションのみ):

export IGNOREEOF=20

または

set ignoreeof=20

設定したら、印刷して設定されているかどうかを確認できます。

printenv

設定を解除することもできます。

unset ignoreeof

永久:

たとえばsublimeを使用して、環境変数を開き、編集して設定します

subl ~/.bashrcまたはsubl ~/.bash_profileと追加export IGNOREEOF=15ファイルの最後に、環境変数を永続的に設定します。これを自動的に行うには、コンソールでこれを試すことができます:

echo "export IGNOREEOF=20" >> ~/.bash_profile

次のようにechoを使用して現在の値を確認することもできます。

echo $IGNOREEOF

値を正しく設定した場合は、値が端末に出力されます。値が設定されていない場合は、空の行が出力されるだけです。

要約

これを試して:

export IGNOREEOF=20 && echo "export IGNOREEOF=20" >> ~/.bash_profile

これがお役に立てば幸いです。

0
Jose Paez