web-dev-qa-db-ja.com

トラップgnome-terminalの閉じるボタン

Bash exitコマンドを使用してgnome-terminalウィンドウからtrapコマンドをトラップできますが、ユーザーがターミナルウィンドウでexitと入力した場合にのみ機能します。ユーザーが代わりに閉じるボタンをクリックした場合、トラップ終了ハンドラーは実行されません。

背景情報:ユーザーが閉じるボタンをクリックしたときに、Bash履歴をカスタム履歴ファイルに保存したいと思います。 export HISTFILE=/tmp/custom.histを使用しましたが、これは多くの場合に機能します(ユーザーがgnome-terminalの閉じるボタンをクリックすると、履歴が特定のファイルに保存されます)が、場合によっては履歴が保存されません。 HISTFILE環境変数を設定する代替手段を探しています。

3
Håkon Hægland

SIGHUPをトラップします。

man 7 signalから:

SIGHUP        1       Term    Hangup detected on controlling terminal or death of controlling process

SIGHUPとEXITの両方をトラップするには:

trap 'export HISTFILE=/tmp/custom.hist' 1 EXIT

または:

trap 'export HISTFILE=/tmp/custom.hist' SIGHUP EXIT
1
kos

コマンドごとに履歴ファイルを保存できます。このトリックは通常、複数のウィンドウの履歴を同期するために使用されますが、あなたの場合には機能します。たとえば、 this answer を参照してください

1
Ron Romero