Um shell é o nome genérico de qualquer programa que forneça uma interface de texto para interagir com o computador. Você digita um comando e a saída é mostrada na tela.
Muitos shells possuem habilidades de scripting: Coloque vários comandos em um script e o shell os executa como se fossem digitados no teclado. A maioria dos shells oferece construções de programação adicionais que estendem o recurso de script para uma linguagem de programação.
Na maioria dos sistemas Unix / Linux, vários shells estão disponíveis: bash, csh, ksh, sh, tcsh, zsh, apenas para citar alguns. Eles diferem nas várias opções que dão ao usuário para manipular os comandos e na complexidade e nos recursos da linguagem de script.
Interativo: Como o termo implica: Interativo significa que os comandos são executados com a interação do usuário do teclado. Por exemplo. o shell pode solicitar que o usuário insira a entrada.
Não interativo: o shell provavelmente é executado a partir de um processo automatizado, portanto não é possível assumir se pode solicitar entrada ou se alguém verá a saída. Por exemplo, talvez seja melhor gravar a saída em um arquivo de registro.
Login: Significa que o shell é executado como parte do login do usuário no sistema. Normalmente usado para fazer qualquer configuração que um usuário precise / deseje estabelecer seu ambiente de trabalho.
Não login: Qualquer outro shell executado pelo usuário após o logon, ou que é executado por qualquer processo automatizado que não esteja acoplado a um usuário conectado.