Tmux'un Ctrl-d ile çıkmasını nasıl önleyebilirim?


30

Sunucumda tmux kullanıyorum ve son zamanlarda ctrl-d'nin tmux'dan çıkacağını ve tüm oturum bilgilerini kaybedeceğini düşündüm, niyetim ssh oturumunu sonlandırmaktı, ancak hala çok geç olana kadar tmux'da olduğumu fark etmemişti.

Gelecekte ctrl-d kullanırken dikkatli olmam gerektiğinin farkındayım, ancak yanlışlıkla ctrl-d'ye çarptığında tmux'un çıkmasını önlemenin bir yolu olup olmadığını merak ettim mi? Bilgi istemi, onay veya ayrılma gibi bir çözüm iyi olur.

Yanıtlar:


35

Kesin olarak, Ctrldçıkmak tmuxdeğil, bir kabuk. Bu kabuk tmuxoturumdaki son pencerenin sadece bölmesinde çalışıyorsa , oturum sona erer ve tmuxistemci çıkar.

CtrldKabuktan çıkılmasını önlemek için , IGNOREEOFkabuk değişkenini ayarlayabilir veya ignoreeofkabuk seçeneğini ayarlayabilirsiniz . .bashrcDosyanıza aşağıdakilerden birini koyun :

IGNOREEOF=10   # Shell only exists after the 10th consecutive Ctrl-d

set -o ignoreeof  # Same as setting IGNOREEOF=10

5
Bu mükemmel, teşekkürler. Ben sadece tmux için gerekli yüzden kullanılan set-environment -g 'IGNOREEOF' 2içinde .tmux.confve şimdi çıkmak için Ctrl-D 3 kez vurmak gerekir ve ben de mesajla her zaman uyardı am: Use "logout" to leave the shell.
Cas

7
IGNOREEOF ortam değişkenini ayarlamak zsh üzerinde hiçbir etkiye sahip değildir, ancak “set -o ignore” veya “setopt ignore” yapar.
sgtpep

11

IGNOREEOFyüzden sadece bağlı benim için işe yaramadı Ctrl+ Diçin detach.tmux.conf içinde:

bind-key -n C-d detach

Bu -n, tmux öneki gibi, önceden kaçış dizisine ihtiyaç duyulmadığı anlamına gelir.


Bir buçuk yıl sonra, IGNOREOFzsh kullandığımdan beri benim için işe yaramadı. setopt ignoreeofiçinde .zshrcişler. Ancak, tmux'un kaynak yapması için tüm tmux oturumlarını öldürmek zorunda kaldım .zshrc. Belki .zshrctmux'dan kaynaklı olabilirdim ...
Rohmer

1
Bunu kullanıyorum, ama can sıkıcı bir sınırlaması var: herhangi bir Ctrl + D'ye, kabuğa veya benzeri bir şeye gönderilip gönderilmediğini keser cat > some_new_file.txt.
Mihai Danila

Bununla birlikte, tmux'ta, bir bölmeyi kapatmanıza izin vermediğinden daha fazla bölme açık olan bir yan etkisi vardır ^D.
Bay Tao,

GÜNCELLEME Sadece son pencereyi / bölmeyi korumak isteyenler için: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'
Frederick Zhang

1
@Rohmer, prezto bana exec zsh.zshrc
krry ile

5

Ayrıca chepner en cevabı tamamen ayarlayarak EOF göndermesini terminali durduramaz eofiçin undefbirlikte stty:

stty eof undef

Şununla sıfırla:

stty eof '^d'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.