¿Cómo funcionan exactamente los programas o los comandos de shell bash en los sistemas Linux?

Oct 18 2020

Estoy investigando cómo funcionan los procesos y el shell en el sistema Linux. Me gustaría consultarle para ver si mis conclusiones son correctas.

Cuando iniciamos el sistema, el kernel inicia el proceso de inicio, todo lo demás se ejecuta como un subproceso con la bifurcación de este proceso. Por ejemplo, cuando ejecuto cualquier programa, el proceso principal se bifurca para este programa y luego el proceso bifurcado se convierte en el proceso secundario (o subproceso) que ejecuta el programa con exec. Si este es el caso, por ejemplo, cuando ejecuto el shell bash, el proceso padre se bifurca y el ejecutivo hace que el proceso bifurcado sea el proceso hijo en el que se ejecutará el programa bash. En este punto, lo que me tropieza es cómo se ejecutan los comandos que ingresamos en el shell bash. ¿Cómo funcionan los comandos integrados y externos? Por ejemplo, ¿los comandos integrados se bifurcan o crean subprocesos para ellos?

Respuestas

1 ctrl-alt-delor Oct 18 2020 at 11:43

Lo que está preguntando será cierto para todos los Unix, no solo para Gnu / Linux.

Lo que hay que tener en cuenta es que después de a fork, no es necesario ejecutar. Entonces, para las versiones integradas de shell, la shell se bifurcará y luego ejecutará el comando integrado.

El shell también se bifurcará para un sub-shell. El shell no se bifurca cuando no es necesario: por ejemplo, para comandos simples que están integrados. Donde simple incluye no en una tubería.

También están (no mencionado en su pregunta) las tuberías. Estos son creados antes de que el tenedor, pero cableados hasta después de la fork, y antes de que, opcional (ver muebles empotrados), exec.