Anda bisa menggunakannya .exec ./your-script
Emulator terminal seperti Terminal GNOME berhenti ketika proses awal berjalan di dalamnya - yang biasanya berupa shell - berhenti.
Jika Anda sudah berada di terminal dan satu-satunya hal yang ingin Anda lakukan sebelum berhenti dari terminal itu adalah menjalankan skrip (atau program) tertentu, maka ini berarti Anda tidak lagi benar-benar membutuhkan shell yang berjalan di dalamnya lagi. Dengan demikian Anda dapat menggunakan exec
builtin shell untuk membuat shell menggantinya dengan proses yang dibuat oleh perintah Anda.
- Dalam hal skrip Anda, itu adalah proses shell lain - sama seperti cara proses shell kedua dibuat saat Anda menjalankan skrip tanpa
exec
.
Sintaksnya adalah , mis . , .exec command
exec ./your-script
exec
: sebuah contoh
Sebagai contoh, misalkan saya memiliki skrip shell bernama count
, ditandai executable, dan terletak di direktori saat ini. Itu mengandung:
#!/usr/bin/env bash
for i in {5..1}; do echo $i; sleep 1; done
Dan, di terminal, saya menjalankan:
exec ./count
Ini mencetak angka 5
, 4
, 3
, 2
, dan 1
, satu per detik, dan kemudian menutup jendela terminal.
Jika Anda menjalankan ini dari sesuatu selain proses pertama berjalan di terminal Anda - misalnya, jika Anda berlari bash
pertama untuk memulai contoh shell lain - maka ini membawa Anda kembali ke shell yang dibuat bahwa proses, bukan berhenti terminal. (Peringatan ini berlaku sama untuk exit
metode berbasis.)
Anda bisa menggunakannya ../your-script; exit
Jika Anda tidak ingin memberi tahu shell Anda untuk menggantinya dengan proses baru (via exec
), Anda dapat menyuruh shell untuk tetap bertahan tetapi keluar sendiri segera setelah proses baru selesai.
Untuk melakukan ini, jalankan perintah dan exit
perintah Anda, pisahkan dengan ;
sehingga mereka dapat diberikan pada satu baris.
Sintaksnya adalah command; exit
, mis . , ../your-script; exit
command; exit
vs. command && exit
Anda mungkin memperhatikan ini mirip dengan metode yang disarankan dalam jawaban kos dan heemayl . Perbedaannya adalah:./your-script && exit
&&
menjalankan perintah kedua hanya jika perintah pertama melaporkan bahwa ia berhasil dengan mengembalikan kode keluar nol.
;
menjalankan perintah kedua terlepas dari apakah perintah pertama dilaporkan berhasil atau tidak.
Yang mana yang Anda inginkan tergantung pada situasi spesifik. Jika perintah gagal, apakah Anda ingin shell panggilan (dan terminal hosting) tetap terjaga? Jika demikian, gunakan &&
; jika tidak, gunakan ;
.
Ada juga command || exit
, yang keluar dari shell panggilan hanya jika command
dilaporkan gagal .