Bagaimana menjalankan skrip tanpa menutup terminal?

69

Saya memiliki skrip dalam file bla.shdan ini dapat dieksekusi. Ketika saya mengkliknya , skrip dieksekusi dan jendela ditutup. Saya ingin jendela tetap terbuka .

Sesuatu seperti perintah cmd /k** commanddi Windows.

PS Saya tidak ingin menggunakan pause, tetapi saya ingin dapat menulis lebih banyak perintah setelah skrip dieksekusi.

UAdapter
sumber

Jawaban:

81

Letakkan $SHELLdi akhir skrip Anda:

teks alternatif

Kelemahan kecil: karena gnome-terminaltidak menjalankan bashshell seperti itu, itu akan menganggapnya sebagai aplikasi dan menampilkan peringatan ketika Anda mencoba untuk menutup terminal:

There is still a process running in this terminal
Closing the terminal will kill it.

Saya tidak menemukan cara yang bagus untuk menyembunyikan peringatan ini. Jika mau, Anda dapat menonaktifkannya sepenuhnya dengan menjalankan:

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

Ini tidak terjadi jika Anda menggunakan xtermgnome-terminal; haruskah itu mengganggumu.

Stefano Palazzo
sumber
20
Anda dapat menggunakan exec $SHELLalih-alih hanya $SHELLmembuat peringatan hilang tanpa mengubah pengaturan.
Andrea Corbellini
1
Tetapi solusi ini menciptakan shell / proses tambahan. Bisakah ini dihindari?
lucasvc
Saya tidak tahu cara untuk melakukan ini, tidak. Masalahnya adalah bahwa Anda kehilangan pegangan pada IO standar setelah proses bash pertama selesai, jadi Anda harus melakukan beberapa tipu daya dengan daemon yang meneruskan pegangan ini, yang kemudian akan lebih rentan kesalahan dan menjengkelkan.
Stefano Palazzo
10

Menggunakan Terminal Gnome

Menggunakan append terminal gnome; bash di akhir string perintah dan memanggil skrip dengan opsi -c bekerja. Sebagai contoh:

gnome-terminal -e "bash -c ~/script.sh;bash"

Ini melakukan hal berikut:

  1. membuka terminal gnome
  2. mengeksekusi script script.sh
  3. menampilkan bash prompt setelah skrip selesai.

Anda dapat keluar dari jendela terminal gnome dengan menutup jendela atau mengetikkan keluar pada bash prompt. Atau Anda dapat mengetik lebih banyak perintah seperti yang diminta.

Karsvo
sumber
7

Jika Anda menggunakan xtermgunakan -hold.

Ramy
sumber
7

Jika Anda memiliki akses ke skrip, Anda juga dapat menambahkan kode berikut di akhir:

read

Kode itu akan menunggu input sebelum ditutup, sehingga terminal akan tetap terbuka sampai Anda menekan Enter.

kode jay
sumber
1
Saya sering menggunakan bashdi akhir, tetapi readmemungkinkan saya untuk menutup jendela hanya dengan ctrl+catau enter, bukan ctrl+shift+watau alt+f4. Ini nyaman saat Anda mengulang dengan cepat pada skrip Anda.
hsandt
5

Gunakan bash's --init-filepilihan dengan pipa sementara:

bash --init-file <(echo './<script_name>')

Ex:

bash --init-file <(echo './bla.sh')
Prem Anand
sumber
2

Menggunakan xtermdan menambahkan ;bashpada akhir string perintah berfungsi. Sebagai contoh:

xterm -e "bash ~/script.sh;bash"

Ini melakukan hal berikut:

  1. membuka xterm
  2. mengeksekusi skrip script.sh
  3. menampilkan bash prompt setelah skrip selesai.

Anda dapat keluar dari jendela xterm dengan menutup jendela atau mengetik exitdi bash prompt. Atau Anda dapat mengetik lebih banyak perintah seperti yang diminta.

Karsvo
sumber
1
xterm -e bash --rcfile bla.sh

Ini akan menjalankan skrip di jendela baru, dan bahkan memberi Anda kendali atas jendela setelah selesai.

Namun jendela baru tidak akan memuat ~/.bashrcseperti biasa, karena kami berlari bla.shsebagai gantinya. Ini bisa diatasi dengan meletakkan

. ~/.bashrc

di atas bla.sh

Steven Penny
sumber