Bagaimana dan mengapa "exec false" menutup terminal?


Jawaban:


10

exec falsemengganti shell saat ini dengan eksekusi perintah false(di sini bukan shell builtin tetapi /bin/falseatau apa pun yang falsedapat dieksekusi yang datang terlebih dahulu PATH) yang dengan cepat keluar. Jika shell adalah proses teratas yang berjalan di emulator terminal Anda, tidak ada lagi proses yang berjalan di dalamnya sehingga terminal emulator ditutup.

Ini adalah cara alternatif yang dapat diterima untuk menutup terminal, seperti halnya banyak perintah serupa:

exec true
exec sleep 0
exec echo
...

Lihat juga: what-do-an-exec-command-do


Sebagai catatan, bashakan melakukan pembersihan tertentu sebelum memanggil exectermasuk perintah penulisan .bash_history. Jadi, jika seseorang hanya ingin menyimpan .bash_historydan meluncurkan shell baru di jendela terminal yang sama, seseorang dapat melakukannya dengan mengetik exec bash.
kasperd

Ok terima kasih sudah menjawab pertanyaan saya dengan sempurna :)
dragonloverlord

Dan pertanyaan yang bagus! oleh karena itu terunggulkan keduanya! ;)
Fabby

@ jiliagre execmemanggil perintah yang ditemukan PATH, bukan bawaan . Misalnya, exec [[ $USER = root ]]akan mengembalikan bash: exec: [[: not foundkesalahan. Dalam kasus OP, falseyang disebut adalah /bin/false, dan bukan shell built-in. Kalau tidak, jawaban yang bagus, maka +1. Sebagai catatan tambahan, execdapat berupa semacam perintah cut-off, yaitu jika tiga perintah dalam contoh Anda dibuat menjadi skrip, tidak ada yang melebihi yang execakan dicapai, karena execakan menggantikan shell yang dipanggil oleh skrip dengan perintah apa pun yang ada di sebelah kanan dari exec.
Sergiy Kolodyazhnyy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.