Saya menggunakan tmux di server saya dan baru-baru ini saya menemukan bahwa ctrl-d akan keluar dari tmux dan kehilangan semua informasi sesi, maksud saya adalah untuk hanya mengakhiri sesi ssh tetapi gagal untuk menyadari bahwa saya masih di tmux sampai terlambat.
Saya sadar bahwa saya harus berhati-hati di masa depan ketika menggunakan ctrl-d tapi saya bertanya-tanya apakah ada cara untuk mencegah tmux untuk keluar ketika memukul ctrl-d secara tidak sengaja? Solusi seperti prompt, konfirmasi atau pelepasan akan baik-baik saja.
set-environment -g 'IGNOREEOF' 2
di.tmux.conf
dan sekarang saya perlu untuk memukul Ctrl-d 3 kali untuk keluar dan saya juga memperingatkan setiap kali dengan pesan:Use "logout" to leave the shell.
IGNOREEOF
tidak bekerja untuk saya jadi saya hanya terikat Ctrl+ Dkedetach
dalam .tmux.conf:bind-key -n C-d detach
The
-n
berarti tidak ada urutan escape sebelum dibutuhkan, seperti tmux awalan.sumber
IGNOREOF
tidak bekerja untuk saya sebelumnya karena saya menggunakan zsh.setopt ignoreeof
dalam.zshrc
karya. Tapi saya harus membunuh semua sesi tmux untuk sumber tmux.zshrc
. Mungkin saya bisa bersumber.zshrc
dari dalam tmux ...cat > some_new_file.txt
.^D
.bind -n C-d if-shell -b 'USHELL="$(basename "$(getent passwd $USER | cut -d: -f7)")"; [ $(tmux list-windows | wc -l) -eq 1 -a $(tmux list-panes | wc -l) -eq 1 -a $(pstree $PPID | egrep "\\b$USHELL\$" | grep -o $USHELL | wc -l) -eq 1 ]' detach 'send C-d'
exec zsh
untuk me-restart zsh dalam tmux ketika saya bermain dengan .zshrcSelain chepner ini jawaban Anda dapat menghentikan terminal mengirim EOF seluruhnya oleh pengaturan
eof
untukundef
denganstty
:Setel ulang dengan:
sumber