Saya tahu bahwa ini mungkin pertanyaan yang relatif tidak ada gunanya, tetapi saya ingin tahu mengapa exec false
menutup terminal seperti exit
halnya.
Saya juga ingin tahu apakah ini cara yang dapat diterima untuk menutup terminal atau tidak.
command-line
Tuan naga
sumber
sumber
Jawaban:
exec false
mengganti shell saat ini dengan eksekusi perintahfalse
(di sini bukan shell builtin tetapi/bin/false
atau apa pun yangfalse
dapat dieksekusi yang datang terlebih dahuluPATH
) 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:
Lihat juga: what-do-an-exec-command-do
sumber
bash
akan melakukan pembersihan tertentu sebelum memanggilexec
termasuk perintah penulisan.bash_history
. Jadi, jika seseorang hanya ingin menyimpan.bash_history
dan meluncurkan shell baru di jendela terminal yang sama, seseorang dapat melakukannya dengan mengetikexec bash
.exec
memanggil perintah yang ditemukanPATH
, bukan bawaan . Misalnya,exec [[ $USER = root ]]
akan mengembalikanbash: exec: [[: not found
kesalahan. Dalam kasus OP,false
yang disebut adalah/bin/false
, dan bukan shell built-in. Kalau tidak, jawaban yang bagus, maka +1. Sebagai catatan tambahan,exec
dapat berupa semacam perintah cut-off, yaitu jika tiga perintah dalam contoh Anda dibuat menjadi skrip, tidak ada yang melebihi yangexec
akan dicapai, karenaexec
akan menggantikan shell yang dipanggil oleh skrip dengan perintah apa pun yang ada di sebelah kanan dariexec
.