¿Puedo hacer que "Hay trabajos detenidos" sea más difícil de matar?

Escenario típico:

Necesito acceder temporalmente a un file al que mi vhost me impide acceder. Arranco vim, edito la configuration y el background vim para decirle a apache que vuelva a cargar su configuration.

Problema:

Si ahora me olvido de esto, mi caparazón me dirá "Hay trabajos detenidos", cuando CTRL + D la session. Sin embargo, dado que tengo el hábito de tener shells en shells con shells, debido a ssh, tmux y similares, también con frecuencia envío repetidamente EOF cuando cierro mi trabajo y cierro las windows. Esto a su vez hace que mate accidentalmente el caparazón, a pesar de la advertencia.

¿Puedo hacer que sea más difícil matar esas conchas?

Si está utilizando bash , puede establecer la variable de shell IGNOREEOF en un número que especifique cuántos caracteres EOF consecutivos debe ignorar el shell antes de tratar el EOF como una señal de salida. Consulte la página de manual para get información específica.

Sin embargo, eso se dispara antes de que se active el post de "hay trabajos detenidos", por lo que todavía tiene el mismo problema: obtiene ese post, y uno más ^ D sale del shell.

Una alternativa es poner el número de trabajos de shell en su post si ese número es mayor que cero.

Por ejemplo, un extracto de mi .bashrc:

 PROMPT_COMMAND=prompt_command prompt_command() { job_count=$(jobs | wc -l) if [ $job_count -gt 0 ] ; then prompt_job="[$job_count] " else prompt_job="" fi } PS1="...\${prompt_job}..." 

Después de esto, el caparazón se verá como ...[1] ... ...[1] ...

Eso pone un recuento de trabajo en su post si es mayor que cero. Esto hace que sea más fácil ver cuándo tiene trabajos incompletos y funciona bien (para mí) como un recordatorio visual de que los trabajos aún se están ejecutando.

Basado en la respuesta anterior, se me ocurrió esto

 PROMPT_COMMAND=protect_bg_jobs protect_bg_jobs() { if [ "$(jobs)" == "" ]; then set +o ignoreeof else set -o ignoreeof fi } 

Oculta el post "Hay trabajos detenidos", pero saveá mis búfers vim.