bash印刷が終了していなくても終了するのはなぜですか?これはバグですか?

bash印刷が終了していなくても終了するのはなぜですか?これはバグですか?

0個または1個の数値引数を使用して終了します。たとえば、exitexit 42exit」を印刷してシェルを終了します。

exit helloexitは、エラーメッセージの印刷、「exit」の印刷、シェルの終了、値255の戻りなどの無効な引数を使用します。

たとえば、パイプの終了はexit | cat | exit「exit」を印刷せず、コマンドの戻り値は使用しているbashのバージョンによって異なります。これはシェルを終了しません。

exit 1 2 3exitは、エラーメッセージを印刷する、「exit」を印刷するがシェルを終了しないなど、いくつかのパラメータを使用します。

これは時々 bash が実際に終了せずに「出口」を印刷することを意味し、これは非常に混乱する可能性があります。これはバグですか、それとも何らかの理由で意味がありますか?

ベストアンサー1

Bash は、非ログインシェルを終了しようとすると「exit」を印刷し、ログインシェルを終了しようとすると「logout」(またはそのロケールの対応する言語)を印刷します。したがって、このメッセージを印刷することは、ユーザーの観点から2つのケースを正確に区別するためのものだと思います(リモートシステムのsshセッションからログアウトしてローカルシステムに戻るときにシステムにテキストメッセージが表示されない場合は、この情報が役に立つ可能性があります。あります)。ホスト名を含みます)。

exit 1 2 3bashが "exit"を印刷するが終了しない(代わりにエラーメッセージを印刷する)状況()後ろに私は「出口」を印刷することがデザインエラーと見なされるべきだと思います。exit引数を解析し、「終了」または「ログアウト」が印刷される前にオプションのエラーメッセージを印刷する必要があります。後者は、引数の確認が成功した場合にのみ印刷する必要があります。これが混乱していると思われる場合は、バグを報告できます。

おすすめ記事