I've seen sites that say when a command is entered in a terminals shell, this gives it to the OS which is where the actual change is done; while others say the shell allows users to communicate with the kernel.
However, images on the internet, like the first one on this Wikipedia page say that the kernel sits between the OS and applications.
So is the shell actually sending the commands to the kernel which then sends them to the OS or does the shell sit at the same level as the kernel and and is then just sending the commands straight to the OS?