Como exatamente os programas ou comandos bash shell funcionam em sistemas Linux?

Oct 18 2020

Estou pesquisando como os processos e o shell funcionam no sistema Linux. Gostaria de consultá-lo para ver se minhas conclusões estão corretas.

Quando iniciamos o sistema, o kernel inicia o processo init, todo o resto é executado como um subprocesso com a bifurcação deste processo. Por exemplo, quando executo qualquer programa, o processo pai é bifurcado para este programa e, em seguida, o processo bifurcado se torna o processo filho (ou subprocesso) que executa o programa com exec. Se for este o caso, por exemplo, quando executo o shell bash, o processo pai bifurcado e exec torna o processo bifurcado o processo filho no qual o programa bash será executado. Nesse ponto, o que me ocorre é como os comandos que inserimos no shell bash são executados. Como funcionam os comandos internos e externos? Por exemplo, os comandos internos bifurcam ou criam subprocessos para eles?

Respostas

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

O que você está perguntando será verdade para todos os Unixes, não apenas para Gnu / Linux.

A coisa a notar é que depois de um fork, não é necessário executar. Portanto, para os internos do shell, o shell bifurcará e, em seguida, fará o comando interno.

A casca também se ramifica para uma sub-casca. O shell não bifurca quando não precisa: por exemplo, para comandos simples que são integrados. Onde simples inclui não em um pipeline.

Há também (não mencionado na sua pergunta) os tubos. Eles são criados antes da bifurcação, mas conectados após forke antes de, opcional (consulte os integrados) exec,.