Unix / Linux - Ambiente
Neste capítulo, discutiremos em detalhes sobre o ambiente Unix. Um conceito importante do Unix é oenvironment, que é definido por variáveis de ambiente. Alguns são configurados pelo sistema, outros por você, outros ainda pelo shell ou qualquer programa que carregue outro programa.
Uma variável é uma cadeia de caracteres à qual atribuímos um valor. O valor atribuído pode ser um número, texto, nome do arquivo, dispositivo ou qualquer outro tipo de dados.
Por exemplo, primeiro definimos uma variável TEST e, em seguida, acessamos seu valor usando o echo comando -
$TEST="Unix Programming"
$echo $TEST
Ele produz o seguinte resultado.
Unix Programming
Observe que as variáveis de ambiente são definidas sem usar o $assinar, mas ao acessá-los usamos o sinal $ como prefixo. Essas variáveis retêm seus valores até sairmos da casca.
Quando você faz login no sistema, o shell passa por uma fase chamada initializationpara configurar o ambiente. Este é geralmente um processo de duas etapas que envolve o shell lendo os seguintes arquivos -
- /etc/profile
- profile
O processo é o seguinte -
O shell verifica se o arquivo /etc/profile existe.
Se existir, o shell o lê. Caso contrário, este arquivo é ignorado. Nenhuma mensagem de erro é exibida.
O shell verifica se o arquivo .profileexiste no seu diretório pessoal. Seu diretório pessoal é o diretório que você inicia após efetuar login.
Se existir, o shell o lê; caso contrário, o shell o ignora. Nenhuma mensagem de erro é exibida.
Assim que ambos os arquivos forem lidos, o shell exibirá um prompt -
$
Este é o prompt onde você pode inserir comandos para que sejam executados.
Note - O processo de inicialização do shell detalhado aqui se aplica a todos Bourne tipo shells, mas alguns arquivos adicionais são usados por bash e ksh.
O arquivo .profile
O arquivo /etc/profile é mantido pelo administrador do sistema de sua máquina Unix e contém informações de inicialização do shell exigidas por todos os usuários em um sistema.
O arquivo .profileestá sob seu controle. Você pode adicionar quantas informações de personalização de shell desejar a este arquivo. O conjunto mínimo de informações que você precisa configurar inclui -
- O tipo de terminal que você está usando.
- Uma lista de diretórios nos quais localizar os comandos.
- Uma lista de variáveis que afetam a aparência de seu terminal.
Você pode verificar o seu .profiledisponível em seu diretório inicial. Abra-o usando o editor vi e verifique todas as variáveis definidas para o seu ambiente.
Configurando o tipo de terminal
Normalmente, o tipo de terminal que você está usando é configurado automaticamente pelo login ou gettyprogramas. Às vezes, o processo de configuração automática adivinha seu terminal incorretamente.
Se o seu terminal estiver configurado incorretamente, a saída dos comandos pode parecer estranha ou você pode não ser capaz de interagir com o shell corretamente.
Para se certificar de que este não é o caso, a maioria dos usuários define seu terminal para o menor denominador comum da seguinte maneira -
$TERM=vt100
$
Configurando o PATH
Quando você digita qualquer comando no prompt de comando, o shell deve localizar o comando antes que ele possa ser executado.
A variável PATH especifica os locais nos quais o shell deve procurar os comandos. Normalmente, a variável Path é definida da seguinte forma -
$PATH=/bin:/usr/bin
$
Aqui, cada uma das entradas individuais separadas por dois pontos (:)são diretórios. Se você solicitar ao shell para executar um comando e ele não puder encontrá-lo em nenhum dos diretórios fornecidos na variável PATH, uma mensagem semelhante à seguinte aparecerá -
$hello
hello: not found
$
Existem variáveis como PS1 e PS2 que são discutidas na próxima seção.
Variáveis PS1 e PS2
Os caracteres que o shell exibe como seu prompt de comando são armazenados na variável PS1. Você pode alterar essa variável para ser o que quiser. Assim que você alterá-lo, ele será usado pelo shell desse ponto em diante.
Por exemplo, se você emitiu o comando -
$PS1='=>'
=>
=>
=>
Seu prompt se tornará =>. Para definir o valor dePS1 para que ele mostre o diretório de trabalho, emita o comando -
=>PS1="[\[email protected]\h \w]\$"
[[email protected] /var/www/tutorialspoint/unix]$
[[email protected] /var/www/tutorialspoint/unix]$
O resultado desse comando é que o prompt exibe o nome de usuário do usuário, o nome da máquina (nome do host) e o diretório de trabalho.
Há muito poucos escape sequencesque podem ser usados como argumentos de valor para PS1; tente limitar-se ao mais crítico para que o prompt não o sobrecarregue de informações.
Sr. Não. | Sequência e descrição de escape |
---|---|
1 | \t Hora atual, expressa como HH: MM: SS |
2 | \d Data atual, expressa como dia da semana, mês, data |
3 | \n Nova linha |
4 | \s Ambiente shell atual |
5 | \W Diretório de trabalho |
6 | \w Caminho completo do diretório de trabalho |
7 | \u Nome de usuário do usuário atual |
8 | \h Nome do host da máquina atual |
9 | \# Número de comando do comando atual. Aumenta quando um novo comando é inserido |
10 | \$ Se o UID efetivo for 0 (ou seja, se você estiver conectado como root), termine o prompt com o caractere #; caso contrário, use o sinal $ |
Você pode fazer a alteração sozinho sempre que fizer login ou pode fazer a alteração automaticamente no PS1, adicionando-a ao seu .profile Arquivo.
Quando você emite um comando que está incompleto, o shell exibe um prompt secundário e espera que você conclua o comando e pressione Enter novamente.
O prompt secundário padrão é > (o maior que o sinal), mas pode ser alterado redefinindo o PS2 variável shell -
A seguir está o exemplo que usa o prompt secundário padrão -
$ echo "this is a
> test"
this is a
test
$
O exemplo abaixo redefine o PS2 com um prompt personalizado -
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$
variáveis ambientais
A seguir está a lista parcial de variáveis de ambiente importantes. Essas variáveis são definidas e acessadas conforme mencionado abaixo -
Sr. Não. | Variável e Descrição |
---|---|
1 | DISPLAY Contém o identificador para a tela que X11 os programas devem usar por padrão. |
2 | HOME Indica o diretório inicial do usuário atual: o argumento padrão para o cd built-in comando. |
3 | IFS Indica o Internal Field Separator que é usado pelo analisador para divisão de palavras após a expansão. |
4 | LANG LANG se expande para a localidade do sistema padrão; LC_ALL pode ser usado para substituir isso. Por exemplo, se seu valor forpt_BR, o idioma será definido como português (brasileiro) e a localidade como Brasil. |
5 | LD_LIBRARY_PATH Um sistema Unix com um vinculador dinâmico contém uma lista de diretórios separados por dois pontos que o vinculador dinâmico deve procurar por objetos compartilhados ao construir uma imagem de processo após exec, antes de pesquisar em qualquer outro diretório. |
6 | PATH Indica o caminho de pesquisa para comandos. É uma lista de diretórios separados por dois pontos, nos quais o shell procura por comandos. |
7 | PWD Indica o diretório de trabalho atual conforme definido pelo comando cd. |
8 | RANDOM Gera um número inteiro aleatório entre 0 e 32.767 cada vez que é referenciado. |
9 | SHLVL Incrementa em um cada vez que uma instância do bash é iniciada. Esta variável é útil para determinar se o comando de saída integrado termina a sessão atual. |
10 | TERM Refere-se ao tipo de exibição. |
11 | TZ Refere-se ao fuso horário. Pode assumir valores como GMT, AST, etc. |
12 | UID Expande-se para o ID de usuário numérico do usuário atual, inicializado na inicialização do shell. |
A seguir está o exemplo de amostra que mostra algumas variáveis de ambiente -
$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$