# Introdução

Este Tutorial do Linux Chix Rio de Janeiro, tem como grande objetivo ensinar Shell.

## O que é um Shell?

Esse termo técnico, tem como significado representar genericamente a comunicação externa entre o usuário e o kernel de seu sistema operacional.

![](https://334465565-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LJMKuMxTqV-tpyFnCsn%2F-LJMKytYrMWio2QkriGg%2F-LJMKzfzSVxKcpRpj-S1%2Fwhats-shell.png?generation=1533694969667098\&alt=media)

O Shell funciona da seguinte forma:

1. Ele lê o que você escreveu.
2. Ele irá interpretar o que você escreveu.
3. Caso esteja tudo certinho (ele entendeu o que você solicitou), ele executará o que você escreveu.
4. Devolver o resultado pelas saídas

As entradas/saídas padrão durante a execução de um comando, é criado um processo que abrirá três fluxos:

![](https://334465565-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LJMKuMxTqV-tpyFnCsn%2F-LJMKytYrMWio2QkriGg%2F-LJMKzg1dZH5B4QPaNQk%2Ffluxostd.png?generation=1533694969103463\&alt=media)

* **stdin :** Chamado entrada padrão, no qual o processo lê os dados de entrada. Por padrão, o stdin se refere ao teclado. STDIN se identifica com o número 0.
* **stdout :** Chamado saída padrão, onde o processo escreve os dados de saída. Por padrão, o stdout se refere à tela. STDOUT se identifica com o número 1.
* **stderr :** Chamado erro padrão, no qual o processo escreve as mensagens de erro. Por padrão, o stderr corresponde à tela. STDERR se identifica com o número .

Por padrão, quando se executa um programa, os dados são lidos a partir do teclado e o programa envia a sua saída e os seus erros para a tela. No entanto, também é possível ler os dados a partir de qualquer dispositivo de entrada, ou mesmo a partir de um arquivo, e enviar a saída para um dispositivo de visualização, um arquivo, etc. Você pode alterar o seu shell pelo /bin/bash/

No linux temos alguns shells instalados:

* **sh -**&#x42;ourne shell.
* **bash -**&#x42;ourne again shell.
* **csh -**&#x43; Shell.
* **Tcsh -**&#x54;enex C shell.
* **ksh -**&#x4B;orn shell.
* **zsh -**&#x5A;ero shell.

Pelo o shell do Linux você pode saber se você é root (administrador) ou um usuário normal, pelo o simbolo do lado dele.

Exemplo:

Root(#):

```
[root@hi_hi_ray ~]#
```

Usuário Normal($):

```
[user@hi_hi_ray ~]$
```

As variáveis de ambientes comuns e mais importantes são:

* **HOME -** Contém o diretório do usuário
* **USER -** Contém o login do usuário
* **PWD -** Contém o diretório atual
* **SHELL -** Contém o nome do shell de conexão
* **PATH -** Contém a lista dos diretórios onde se encontram os comandos que o usuário pode executar
* **HOSTNAME -** Contém o nome da máquina
* **HISTSIZE -** Contém o tamanho máximo dos comandos executados dentro do arquivo histórico
* **PS1 -** Contém as configurações de exibição do prompt de comando.
