J'utilise tmux sur mon serveur et récemment, j'ai découvert à mes dépens que ctrl-d quitterait tmux et perdrait toutes les informations de session, mon intention était simplement de mettre fin à la session ssh mais je n'ai pas remarqué que j'étais encore dans tmux jusqu'à trop tard.
Je suis conscient que je devrais être prudent à l'avenir lors de l'utilisation de ctrl-d, mais je me demandais s'il y avait un moyen d'empêcher tmux de quitter lorsque vous appuyez sur ctrl-d par accident? Une solution telle qu'une invite, une confirmation ou un détachement serait bien.
set-environment -g 'IGNOREEOF' 2
en.tmux.conf
et maintenant je dois frapper Ctrl-d 3 fois pour sortir et je suis également prévenu chaque fois avec le message:Use "logout" to leave the shell.
IGNOREEOF
n'a pas fonctionné pour moi donc j'ai juste lié Ctrl+ Dàdetach
dans .tmux.conf:bind-key -n C-d detach
Les
-n
moyens d'échappement aucune séquence préalable nécessaire, comme le préfixe tmux.la source
IGNOREOF
cela ne fonctionnait pas pour moi avant depuis que j'utilise zsh.setopt ignoreeof
en.zshrc
travaux. Mais j'ai dû tuer toutes les sessions tmux pour que tmux soit source.zshrc
. Peut-être que j'aurais pu.zshrc
provenir de 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
pour redémarrer zsh dans tmux lorsque je joue avec le .zshrcEn plus de chepner réponse , vous pouvez arrêter le terminal d'envoyer EOF entièrement par la mise
eof
àundef
avecstty
:Réinitialiser avec:
la source