Bagaimana saya bisa menjaga kontrol + d dari memutuskan sesi saya?

26

Saya secara teratur ssh ke kotak centos 5. Entah bagaimana mereka memetakan kunci sehingga control+dakan mengeluarkan saya dari shell saya saat ini. Jika saya sudo'ed untuk penggunaan lain, itu menempatkan saya kembali ke pengguna sebelumnya. Jika saya tidak sudo'ed itu hanya memutus saya. Bagaimana saya bisa mencegah hal ini terjadi? Saya secara teratur menggunakan kontrol + d untuk membatalkan interpreter python dan terkadang saya secara tidak sengaja menekannya lebih dari sekali.

cwd
sumber
di csh, Anda lakukanset ignoreeof
Trevor Boyd Smith

Jawaban:

32

Anda sedang mencari IGNOREEOFvariabel lingkungan jika Anda menggunakan bash:

IGNOREEOF

Mengontrol aksi shell interaktif saat menerima karakter EOF sebagai input tunggal. Jika diatur, nilainya adalah jumlah karakter EOF berturut-turut yang harus diketik sebagai karakter pertama pada baris input sebelum bash keluar. Jika variabel ada tetapi tidak memiliki nilai numerik, atau tidak memiliki nilai, nilai defaultnya adalah 10. Jika tidak ada, EOF menandakan akhir input ke shell.

Jadi export IGNOREEOF=42, Anda harus menekan Ctrl+Dempat puluh dua kali sebelum benar-benar keluar dari shell Anda.

POSIX juga setmemiliki -o ignoreeofpengaturan. Jadi bacalah dokumentasi shell Anda untuk melihat apakah shell Anda memiliki ini (seharusnya), dan untuk memeriksa semantiknya yang sebenarnya.

Tikar
sumber
Nice, memberikan pesan "Gunakan keluar untuk meninggalkan shell", setidaknya di Ubuntu. Menjadi su'd menjadi pengguna, Anda mungkin tidak ingin secara tidak sengaja meninggalkannya, terutama jika pengguna induk adalah tingkat root.
Fiasco Labs
1
Saya pribadi merasa itu sangat menjengkelkan, jadi saya tidak mengaturnya di mana pun. Mengetahui hal ini saat mencoba menonaktifkan perilaku itu :)
Mat
2
Saya tidak bisa menahan diri untuk menjadi pedant. IGNOREEOFadalah berapa kali EOF diabaikan sebelum akhirnya menerimanya. Jadi, dalam contoh Anda di atas, jika Anda export IGNOREEOF=42, Anda perlu menekan CONTROL-D 43 kali untuk keluar - bukan 42.
Alvin Thompson
2

tcsh set ignoreeofatau set ignoreeof=<any value not 1>bekerja

kode sandi
sumber
0

Jika Anda benar-benar tidak suka memiliki Ctrl-d, maka Anda dapat menghapus eofkarakter di kontrol terminal.

stty eof undef

Setelah ini, Cntl-dakan ada karakter kontrol lainnya.

Arcege
sumber
1
Saya baru saja mencobanya di terminal (urxvt) dengan bash, dan di konsol biasa, dan itu tidak berhasil.
Mat
Hmm ... yang dulu bekerja dan dokumen masih mengatakan itu. Alternatifnya adalah menggunakan <kbd> Ctrl- [</kvd>.
Arcege
2
Ini juga akan membuatnya tidak lagi keluar dari python.
psusi