Cara menangguhkan bash dalam bash

4

Apakah mungkin untuk menangguhkan bash yang diminta oleh bash lain? Misalnya, jika saya menggunakan suuntuk menjadi pengguna yang berbeda tetapi ingin beralih kembali ke pengguna saya sendiri sejenak. Sebagai contoh lain, dalam sesi SSH, saya bisa menggunakan ~ shortcut (~, ^ Z) untuk menangguhkan shell remote dan kembali ke shell lokal saya (tapi itu jelas fitur SSH, bukan shell).

bash mencegat ^ Z untuk melakukan kontrol prosesnya sendiri, jadi itu harus perintah yang terpisah (jika itu didukung). Tetapi berusaha menemukannya hanya menghasilkan informasi tentang kontrol proses normal.

Brian
sumber

Jawaban:

5

Bash memiliki suspendbuiltin:

suspend: suspend [-f]
    Suspend shell execution.

    Suspend the execution of this shell until it receives a SIGCONT signal.
    Unless forced, login shells cannot be suspended.

    Options:
      -f    force the suspend, even if the shell is a login shell

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.
Orang Mars
sumber
Ahha! Itu yang saya cari.
Brian
5

Coba dengan:

kill -STOP $$

di mana $$adalah PIDdari shell saat ini.

Anda dapat mengikatnya ke Alt+ zmisalnya dengan menambahkan ke ~/.inputrc:

"\ez": "kill -STOP $$\n"
cYrus
sumber
Luar biasa terima kasih! Tidak pernah tahu tentang .inputrc
Brian
Ini mengontrol cara bashmembaca / mengedit input pengguna, lihat man readline, itu bisa sangat berguna, ada baiknya menyebutkan perintah: history-search-backwarddan history-search-backward.
cYrus
1

Tidak persis apa yang Anda minta, tetapi saya biasanya menggunakan layar ketika saya melakukan hal-hal seperti itu. Namun, layar tidak diinstal secara default di semua sistem.

pmac72
sumber
Saya benar-benar bekerja di layar sepanjang waktu. Saya menjalankan layar pada mesin lokal saya dan memiliki sesi SSH menjadi sekelompok orang lain. Jadi saya biasanya tidak menjalankan layar pada sistem jarak jauh karena layar-dalam-layar canggung. Dan saya terlalu malas untuk membuka sesi lain :-). Saya terbiasa menekan ^ Z dalam vim untuk menangguhkannya ketika saya perlu menjalankan beberapa perintah (saya tahu vim telah! Tapi itu tidak sama dengan shell).
Brian