特定のディレクトリで終了する場合は、ログアウトスクリプトのコードを実行しますか?

特定のディレクトリで終了する場合は、ログアウトスクリプトのコードを実行しますか?

私が貢献している複数のライブラリをテストするために、さまざまなコンピュータにアカウントを持っています。一部のマシンは他の人(GCCコンパイルファームなど)の所有者なので、きれいに保ちたいと思っています。

以下.bash_logoutを行うスクリプトを設定したいmake cleanexit もし私は特定のディレクトリにいます。ディレクトリでは、複数のSSHセッションを終了する必要があります。 1つのセッションでビルド/テストする場合は、アーティファクトをクリーンアップするために別々のセッションログアウトをしたくありません。つまり、実行がexitキャンセルされ$HOME/libfooexit決して$HOME

基本は理解していますが、それがどれほど強力かはわかりません。

# $HOME/.bash_logout

if [ "$PWD" = "$HOME/libfoo" ]; then
    make clean 1>/dev/null 2>&1
fi

$PWDログアウト時の使用に問題はありませんか?私が逃した他の質問がありますか?

ベストアンサー1

ログアウト時にのみスクリプトを実行しますか?
メンズバッシュから:

ログインシェルが終了すると、bashは〜/ .bash_logoutファイル(存在する場合)からコマンドを読み取り、実行します。

bashログインシェルを終了したときにのみ適用されます。


シェルが閉じるたびにスクリプトを実行するには、トラップを使用します(man bashを参照)。

trap /u1/myuser/on_exit_script.sh EXIT

これを.bashrcまたはあなたに適した他のファイルに追加してください。


さらに、スクリプトはシャットダウン時に実行されるため、$ PWDはシャットダウン時にアクティブになるスクリプトになります。これはシェルが起動したときと同じかもしれません。終了時に使用された $PWD で何かを行う必要がある場合はそうです。このテストは次のとおりです。

if [ "$PWD" = "$HOME/libfoo" ]; then

動作する必要があります。

おすすめ記事