I'm curious about the advantage of forking and executing a program in a user shell as opposed to forking and executing the program directly without the user shell.
For example:
why is it often like:
SSHD->fork&exec(shell, sftp-server)->fork&exec(sftp-server)
but the sftp program is being accessed by a remote client and the shell features of auto-completion etc will not come into picture as the commands from the sftp client will be passed to the server as is without any modifications. Am I wrong?