¿De dónde obtiene un proceso bash sus controladores/trampas de señales predeterminados?

¿De dónde obtiene un proceso bash sus controladores/trampas de señales predeterminados?

De https://stackoverflow.com/questions/50606753/do-getrlimit-and-setrlimit-work-by-reading-from-and-writing-to-etc-sec#comment88227414_50607042

Bash no tiene un controlador especial para SIGQUIT y no participa en el proceso de creación de un volcado de núcleo. El kernel escribe un volcado de núcleo como parte de la "acción predeterminada" para SIGQUIT, si y sólo si el rlimit para los volcados de núcleo es lo suficientemente grande; ese rlimit puede haberse establecido al iniciar sesión de acuerdo con lo que dice en limites.conf, o puede haberse ajustado manualmente usando ulimit, o lo que sea.

No entiendo muy bien "Bash no tiene un controlador especial para SIGQUIT".

¿Es correcto que cada proceso tenga controladores de señales incluso si algunos de ellos son predeterminados y, por lo general, un proceso adquiere sus controladores de señales predeterminados de fork()los cuales copiará los controladores de señales de su padre y execve()no cambia los controladores de señales?

¿De dónde obtiene un proceso bash sus controladores/trampas de señales predeterminados?

En APUE, no puedo encontrar si login(o gettyalgún otro programa en la secuencia de inicio) es el primer programa que configura controladores de señales predeterminados (así como límites de recursos de /etc/security/limits.conf, que es el centro del tema en el enlace) y pasa hasta el shell de inicio de sesión:

Si iniciamos sesión correctamente, el inicio de sesión

• Cambiar a nuestro directorio de inicio (chdir)

• Cambiar la propiedad de nuestro dispositivo terminal (chown) para que sea nuestro

• Cambiar los permisos de acceso a nuestro dispositivo terminal para que tengamos permiso para leer y escribir en él.

• Configure nuestros ID de grupo llamando a setgid e initgroups

• Inicialice el entorno con toda la información que tiene el inicio de sesión: nuestro directorio de inicio (HOME), shell (SHELL), nombre de usuario (USER y LOGNAME) y una ruta predeterminada (PATH).

• Cambie a nuestra ID de usuario (setuid) e invoque nuestro shell de inicio de sesión, como en

execl("/bin/sh", "-sh", (char *)0);

información relacionada