Unix 端末で終了コマンドはどのように機能しますか?

Unix 端末で終了コマンドはどのように機能しますか?

exitこのコマンドがUnix端末でどのように機能するかを説明できる人はいますか?

検索しましたが、man exit 何のwhich exit助けもなく次のような問題を発見しました。

新しいRed HatシステムにAnacondaおよびPyCharm用アドインパッケージをインストールした後、ターミナルセッションを終了しよexitうとするたびに一連のエラーが発生し、ターミナルが期待どおりにシャットダウンすることがわかりました。これらのエラーは、私が呼び出す呼び出しが呼び出しをexitトリガーしてエラーを発生させていることrm ~/anaconda3/.../を示すようです。rm ~/PyCharm/....すべてのディレクトリは、これらのプログラム(たとえば、numpy)用にダウンロードしたパッケージの場所であるように見えます。下記をご覧ください。

$ exit
rm: cannot remove ‘~/anaconda3/lib/python3.5/site-packages/numpy/core’: Is a directory
...
...

解決する

私の~/.bash_logoutファイルに1行があります

find ~ -xdev ( -name *~ -o -name .*~ -o -name core ) -exec \rm '{}' \;

この行をコメントアウトすると、エラーメッセージが停止します。一時ファイルをすべて検索して削除するようです。ただし、「core」という単語を含むディレクトリを見つけて削除しようとすることもできます。これがシステムのデフォルトです。

ベストアンサー1

man bash

  exit [n]
         [...]  A trap on EXIT is executed before the shell terminates.

これらのトラップは、シャットダウン時にtmpファイルを整理するためによく使用されます。 https://stackoverflow.com/questions/687014/removing-created-temp-files-in-unexpected-bash-exit

次のように終了トラップを定義します(新しいシェルでより良いテストのため)。

$ bash
$ trap "rm filetodelete" EXIT

定義されたEXITトラップを表示します。

$ trap -p EXIT
trap -- 'rm filetodelete' EXIT

テスト:

$ exit
rm: cannot remove ‘filetodelete’: No such file or directory

exit暗黙的に「呼び出し」することも可能であることに注意してください。したがって、exitトラップを実行することもできますkill -HUP $$

おすすめ記事