Sim, os programas podem usar o shell, explícita ou implicitamente.
Ver, por exemplo, A resposta de Stéphane a uma questão não relacionada.
Ele diz, por exemplo, que se o programa usar as funções da biblioteca C execlp()
ou execvp()
para executar um comando, sobre execve()
retornando ENOEXEC
, ele normalmente chamará sh
(sendo um script de shell sem um interpretador explícito especificado, que é o contexto para essa questão). sh
é um shell.
Um aplicativo que usa system()
para executar um utilitário também invocará um shell.
Eu não posso dizer nada especificamente sobre o Nautilus, mas se ele permitir que você execute scripts de qualquer tipo, provavelmente usará um shell para fazer isso. O restante do aplicativo provavelmente usará bibliotecas para os elementos da GUI e outras bibliotecas para eventos, operações do sistema de arquivos, etc. Essas bibliotecas provavelmente são gravadas em C ou em uma linguagem semelhante e usam a biblioteca C, algumas das quais fazem interface com o kernel do sistema operacional para algumas operações.
Eu duvido muito que o próprio gerenciador de arquivos seja escrito em qualquer tipo de linguagem shell, embora possa usar scripts shell para inicialização ou outras operações.