Bash exit
コマンドを使用してgnome-terminal
ウィンドウからtrap
コマンドをトラップできますが、ユーザーがターミナルウィンドウでexit
と入力した場合にのみ機能します。ユーザーが代わりに閉じるボタンをクリックした場合、トラップ終了ハンドラーは実行されません。
背景情報:ユーザーが閉じるボタンをクリックしたときに、Bash履歴をカスタム履歴ファイルに保存したいと思います。 export HISTFILE=/tmp/custom.hist
を使用しましたが、これは多くの場合に機能します(ユーザーがgnome-terminalの閉じるボタンをクリックすると、履歴が特定のファイルに保存されます)が、場合によっては履歴が保存されません。 HISTFILE
環境変数を設定する代替手段を探しています。
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
コマンドごとに履歴ファイルを保存できます。このトリックは通常、複数のウィンドウの履歴を同期するために使用されますが、あなたの場合には機能します。たとえば、 this answer を参照してください