bash_logoutと履歴

bash_logoutと履歴

私は皆を救うのが大好き歴史Bashには一種のログファイルとして保存され、これには追加のディレクトリ〜/lib/hists/が作成されました。

シェルからこれらのログファイルを作成するのは簡単です。

history -w /home/stefan/lib/hists/bash-hist-$(date +%F_%T_%N)

閉じると、すべての閉じたxtermがログファイルに書き込まれるため、競合を避けるためにファイル名にナノ秒が含まれます。

だから私はその命令を~/.bash_logout

残念ながら、xtermを閉じても、そのようなログファイルは生成されません。おそらく窓を閉めたからではないかと思いました。したがって、bashでbashを起動します。

bash
ls
exit

しかし、再び歴史的な記録はありません。

ほとんどの場合、4〜6個の端末が開いていますが、私が知らない履歴ファイルしかありません。どのコマンドがそこにあるのか - 最初のオープンシェルから始めて、最後の閉じたシェルから始めますか?操作中に履歴は干渉しないため、1つのシェルインスタンスにのみバインドされているようです。

私が興味を持っているのは、私のアプローチが失敗した理由とは非常に異なるアプローチを含む、これを解決した方法の説明です。

答え1

.bash_logoutBashは、シェルがログインシェルの場合にのみコマンドを実行します。

# .bash_logout will print "hi"
$ cat .bash_logout
echo hi

# Start a new shell that is not a login shell
$ bash
$ shopt login_shell
login_shell     off

# On exit, it will not print "hi"
$ exit
exit

# Start a login shell
$ bash -l
$ shopt login_shell
login_shell     on

# On exit it will execute .bash_logout, and will print "hi"
$ exit
logout
hi

バラよりsuperuser.comの答え解決したい問題の詳細と代替ソリューションをご覧ください。

関連情報