「exec false」が端末を閉じる方法と理由は?


8

これはおそらく比較的無意味な質問であることは知っていexec falseますが、なぜ端末を閉じるのと同じように閉じるのかについて知りたいexitです。

これがターミナルを閉じるのに受け入れられる方法かどうかも知りたいです。


回答:


10

exec false現在のシェルを、すぐに終了するコマンドfalse(ここでは組み込みのシェルではなく、/bin/falseまたはのfalse最初にある実行可能ファイル)の実行で置き換えPATHます。シェルがターミナルエミュレーターで実行されている最上位のプロセスだった場合は、シェル内で実行されているプロセスがないため、ターミナルエミュレーターは閉じられます。

これは、多くの同様のコマンドと同様に、ターミナルを閉じるための受け入れ可能な代替方法です。

exec true
exec sleep 0
exec echo
...

参照:what-does-an-exec-command-do


補足として、は、へのコマンドの書き込みbashexec含めて、呼び出す前に特定のクリーンアップを実行し.bash_historyます。そのため.bash_history、同じターミナルウィンドウで新しいシェルに保存して起動するだけの場合は、と入力して実行できますexec bash
kasperd 2015年


そして良い質問です!したがって、両方に賛成しました!;)
ファビー2015年

@jiliagre execPATH、組み込みではなく、にあるコマンドを呼び出します。たとえば、エラーexec [[ $USER = root ]]が返されbash: exec: [[: not foundます。OPの場合、falseそれは呼ばれています/bin/falseであり、シェルの組み込みでありません。そうでなければ、良い答えなので、+ 1。補足として、exec一種のカットオフコマンドにすることができます。つまり、この例の3つのコマンドをスクリプトにした場合、スクリプトによって呼び出されたシェルが右側のコマンドに置き換えられるexecため、最初に到達するものは何もありません。execexec
Sergiy Kolodyazhnyy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.