FreeBSD

21 de junho de 2016

SHELL no FreeBSD

Mais artigos de »
Escrito por: Leonardo Souza
Tags:

Resumo: apresentamos neste artigo uma explicação do termo Shell. O que é? como funciona? para que serve? Veremos como funciona o Shell no FreeBSD e como podemos modificar o Shell padrão do sistema.

Introdução

Em termos gerais, SHELL é um software responsável por interpretar comandos e realizar tarefas a partir destes comandos. Na prática realiza uma interação entre usuário e serviços do kernel do sistema operacional. Ele recebe estes comandos, em geral por meio de uma interface em linha de texto, por este motivo é conhecido como “terminal de texto”. As instruções enviadas ao kernel do sistema operacional podem, ou não, possuir retorno, caso positivo, este retorno ocorrerá, por exemplo, mostrando uma mensagem no prompt de comandos ou executando outra aplicação.




Uma das características de alguns SHELLs é a capacidade de armazenar sequencias de comandos, ou seja, um histórico dos comandos executados, facilitando assim, o reuso deles caso necessário. Outra característica dos SHELLs, a maioria pelo menos, é que podem interpretar sequência de comandos presentes em arquivos de texto, comumente chamados de scripts. Basta para isso informar no início do arquivo qual o interpretador das instruções contidas nele.

Existem várias implementações de Shell, a maioria são capazes de executar funções semelhantes, porém alguns possuem estruturas e comandos próprios que os diferenciam dos outros. Dentre os vários Shells existentes podemos citar o csh, sh, tcsh, ksh e zsh, mas, sem dúvidas, o mais famoso é o bash, implementação do Shell utilizados nos sistemas GNU/Linux.

O Bash (Bourne Again Shell) é uma implementação do Shell desenvolvida por S. R. Bourne e utilizado na maioria das distribuições GNU/Linux, tanto que chegou ao status de padrão de shell para estas distribuições. Assim como outros Shells, no Bash, existe o recurso de auto-complemento, histórico de comandos e execução por meio de Shell script.

Shell no FreeBSD

Assim como a maioria dos sistemas baseados em Unix, no FreeBSD, a maioria das tarefas administrativas são realizadas por meio da interface de texto, ou seja, ambiente Shell. O FreeBSD vem com uma série de interpretadores de comandos, como o sh e o tchs, além de outros disponíveis por meio da coleção de ports como o Zsh e o já citado bash.

Enquanto no GNU/Linux o Bash é o padrão, no FreeBS não ocorre o mesmo. Sendo assim, é plenamente possível utilizar o sh ou o csh, assim como o próprio bash, basta instalá-lo e configurá-lo. A escolha do Shell a ser utilizado depende de qual é mais familiar ao usuário. Por exemplo, um programador C, preferirá utilizar um Shell que possui comandos semelhantes à linguagem, como o tcsh. Por outro lado, se o usuário possui origens no GNU/Linux, ou é novo no Unix, vai preferir utiliza o bash.

Para visualizar a lista de Shells disponíveis no FreeBSD podemos checar o arquivo /etc/shell:

Shell no FreeBSD

Neste caso temos alguns disponíveis para uso além do sh, csh e o próprio bash.

Importante perceber que cada interpretador possui propriedades únicas e seu uso dependerá do ambiente de trabalho utilizado e das particularidades desejadas pelo usuários.

Variável de ambiente

Outra funcionalidade de um Shell é a utilização de variáveis de ambiente. Estas variáveis podem ser lidas por qualquer programa invocado pelo interpretador, assim podem utilizar configurações presentes no próprio Shell. Na lista abaixo apresentamos algumas variáveis comuns e seus respectivos valores:

USER: armazena o usuário logado no momento.

PATH: armazena a lista de diretórios que contem o caminho onde deve-se procurar por binários.

SHELL: armazena o interpretador de comandos atual.

TERM: nome do terminal do usuário, determina as características do terminal.

OSTYPE: determinado tipo do sistema operacional, por exemplo, FreeBSD.

MACHTYPE: arquitetura de CPU que o sistema está executando.

EDITOR: editor de texto padrão para o usuário, por exemplo, o editor “vi”.

MANPATH: lista de diretórios que indicam o caminho onde as páginas de manuais devem ser buscadas.

Alterar os valores de uma variável de ambiente pode ser tarefa diferente dependendo do interpretador utilizado. Por exemplo, nas Shells baseados na linguagem C, como o tchs e o csh, utiliza-se o comando setenv. Por outro lado, para os interpretadores estilo Bourne Shell como o sh e o bash, utiliza-se o export. Nas linhas abaixo mostrando estes exemplos:

Utilizando o csh ou tcsh:

#  setenv EDITOR /usr/local/bin/emacs

Utilizando o Bash ou similar:

# export EDITOR=”/usr/local/bin/emacs”

Nas linhas acima alteramos o valor da variável de ambiente EDITOR para que utilize o editor emacs.

É possível também visualizar o valor destas variáveis simplesmente utilizando o comando echo seguido do caractere “$” e a variável logo depois.

Exemplo:

$ echo $TERM

Alterando o Shell Padrão do FreeBSD

Como já foi explicado, é possível modificar o Shell padrão do sistema e utilizar um outro de sua preferência. A forma mais simples de se fazer isso é utilizando o comando chsh. Quando utilizarmos o comando chsh seremos direcionados para um ambiente de edição, que utilizará  o editor de texto definido na variável de ambiente EDITOR, se ela não estiver definida será utilizado o vi.

#chsh

Shell no FreeBSD

Esta janela nos apresenta algumas informações sobre o usuário, entre elas o Shell utilizado por ele. Esta informação pode ser vista na linha Shell. Perceba que estamos utilizando o Shell csh, definido na linha “Shell”. Para alterar o Shell padrão precisamos alterar este valor.

Outra forma de utilizar o comando chsh é passando o shell desejado como parâmetro para o comando:

# chsh -s /usr/local/bin/bash

Se não souber o caminho completo do shell desejado basta checar o arquivo /etc/shells.

Atenção: se o shell desejado não estiver listado no arquivo /etc/shells, será necessário instalá-lo no sistema. Isso pode ser feito através da coleção de ports ou por meio de pacotes binários.

Importante: é recomendado que o shell padrão do usuário root não seja alterado. O motivo disso é que shells não incluídos na base do sistema são instalados normalmente em /usr/local/bin ou /usr/bin. Nestes casos, se ocorrer um problema no sistema de arquivo onde estão localizados estes diretórios e eles não puderem ser montados, o usuário root não teria acesso ao seu shell e consequentemente não poderia logar no sistema.

Para sanar esta questão existe no sistema uma “segunda conta root”: o usuário toor. Caso deseja alterar o shell do root, esta é conta que deve ser modificada.

Conclusão

O Shell no FreeBSD possui algumas diferenças em comparação ao GNU/Linux, por exemplo, começando pelo padrão do sistema. Conhecer este ambiente é fundamental para um administrador de sistemas FreeBSD e para um usuário padrão, afinal este é o ambiente que passará a maior parte do tempo, se desejar administrar o sistema.






Sobre o Autor

Foto de perfil de Leonardo Souza
Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.




0 Comments


Seja o Primeiro a Comentar!


You must be logged in to post a comment.