Yes, programs may well use the shell, either explicitly or implicitly.
See e.g. Stéphane's answer to an unrelated question.
Their answer says, for example, that if the program uses the C library functions execlp()
or execvp()
to run a command, upon execve()
returning ENOEXEC
it will typically invoke sh
on it ("it" being a shell script without an explicit interpreter specified, which is the context for that question). sh
is a shell.
An application that uses system()
to execute a utility will also typically invoke a shell.
I can't say anything specifically about Nautilus, but if it allows you to execute scripts of any kind, it most likely uses a shell for doing so. The rest of the application will probably use libraries for the GUI elements and other libraries for events, filesystem operations etc. These libraries are most likely written in C or a similar language and uses the C library, some of which interfaces with the operating system kernel for some operations.
I highly doubt that the file manager itself is written in any sort of shell scripting language though, although it may well use shell scripts for startup or other operations.