Escolar Documentos
Profissional Documentos
Cultura Documentos
3.0 Introdução
Um componente chave do shell Bash são as variáveis do shell. Essas variáveis são críticas
porque armazenam informações vitais do sistema e modificam o comportamento do shell Bash,
além de muitos comandos.
Neste laboratório, você aprenderá como configurar recursos do shell, como: variáveis e histórico
de comandos. A compreensão desses recursos do shell facilitará muito o trabalho no ambiente
de linha de comando.
3.1 Etapa 1
Uma variável local está disponível apenas para o shell em que foi criada. Para definir o valor de uma
variável, use a seguinte expressão de atribuição:
nome_da_variável=valor
name="bob"
echo $name
export variavel=valor
export AGE=25
echo $AGE
Abra outro shell e visualize o conteúdo das duas variáveis que foram criadas:
bash
echo $ name
echo $ AGE
Observe na saída dos comandos acima que a variável $name não existia no novo shell porque as
variáveis locais não são passadas para novos processos. No entanto, a variável $AGE existia no novo
shell, pois as variáveis de ambiente são passadas para novos processos.
3.4 Etapa 4
O comando set por si só exibirá todas as variáveis (local e ambiente). Para exibir variáveis no shell
original, saia do shell atual e use o comando set com um pager, junto com o comando less, em um
pipeline de comandos usando o caracter pipe |
IDADE = 25
BASH = / bin / bash
BASHOPTS = tamanho da verificação: cmdhist: complete_fullquote:
expand_aliases: extglob: extquote
: force_fignore: histappend: comentários_interativos: login_shell: progcomp:
promptvars: s
ourcepath
BASH_ALIASES = ()
BASH_ARGARC (=)
BASH_ARGAR
BASH_CMDS = ()
BASH_COMPLETION_VERSINFO = ([0] = "2" [1] = "8")
BASH_LINENO = ()
BASH_SOURCE = ()
BASH_VERSINFO = ([0] = "4" [1] = "4" [2] = "19" [3] = "1" [4] = "release" [5]
= "x86_64-pc-lin
ux-gnu")
BASH_VERSION = 'Versão 4.4.19 (1)'
COLUMNS = 80
DIRSTACK = ()
EDITOR = vi
eUID = 1001
GRUPOS = ()
HISTCONTROL = ignoreboth
HISTFILE = / home / sysadmin / .bash_history
HISTFILESIZE =
2000:
env
Nota
Os comandos a seguir também exibirão apenas variáveis de ambiente e fornecerão uma saída
semelhante ao env comando:
declare -x
typeset -x
export - p
3.6 Passo 6
Se ele não é mais necessário para uma variável a ser definida, o unset comandopode ser usado para
excluí-lo:
vARIÁVEL unset
Execute os seguintes comandos para resetar essas variáveis e verifique se eles não são mais definidas:
unset nome
unset AGE
echo $ name
echo $ AGE
Importante
Não desmarque as variáveis críticas do sistema, como PATH Variável, pois isso pode levar a um ambiente
com defeito.
3.7 Etapa 7
A PATH variávelcontém uma lista de diretórios usados para procurar comandos digitados pelo usuário.
Quando o usuário digita um comando e pressiona a Enter tecla, os PATH diretóriossão pesquisados em
busca de um arquivo executável que corresponda ao nome do comando.
echo $ PATH
/ home / sysadmin / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin : /
usr / bin: / sbin: / bin: / usr / games: / usr / local / games
A tabela a seguir ilustra o objetivo de alguns dos diretórios exibidos na saída do comando anterior:
etório nteúdo do
Nota
Lembre-se de que, quando você executa um comando sem especificar um nome de caminho completo, o
shell usa o valor da PATH variávelpara determinar onde o comando está armazenado.
t 3.8 Etapa 8
Usando o which comando, você pode determinar onde um comando reside no PATH. Execute o seguinte
para determinar onde ls reside o comando:
qual ls
/ bin / ls
●
3.9 Etapa 9
Se o comando não residir em um diretório especificado na variável PATH, nenhuma saída será exibida:
wich zzz
Considere isto
Você também pode usar o comando tipo, que indica mais claramente que o comando não está
localizado no CAMINHO:
type zzz
Existem dois tipos de caminhos comumente usados ao chamar um comando ou localizar um arquivo no
sistema de arquivos Linux: caminhos absolutos e caminhos relativos.
Nota
Se um comando ou arquivo parece estar ausente, geralmente o motivo é que ele não está localizado nos
diretórios da PATH variávele o usuário está tentando acessá-lo com um caminho relativo. Embora a
especificação de um caminho absoluto deva remediar o problema, ele pode ser complicado,
especialmente quando um arquivo está localizado em várias camadas em uma estrutura de diretório.
Um caminho relativo é usado para arquivos que estão dentro da estrutura de diretórios em que você está
localizado. Por exemplo, os usuários normalmente efetuam login em seus diretórios pessoais, portanto,
mudar para o Documentos diretório(localizado no diretório pessoal do usuário) usando o caminho
relativo é tão simples quanto digitar o seguinte comando:
cd Documents
● cd / etc
cd Documents
Em vez disso, você precisaria usar o caminho absoluto digitando o seguinte comando:
● mkdir mybin
PATH = $PATH:/home/sysadmin/mybin
● sysadmin@localhost:~/Documents$ cd ~
● sysadmin@localhost:~$ mkdir mybin
● sysadmin@localhost:~$ PATH=$PATH:/home/sysadmin/mybin
echo $PATH
/ home / sysadmin / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: /
usr / bin: / sbin: / bin: / usr / jogos: / usr / local / jogos: / home / sysadmin /
mybin
Observe na saída acima que o / home / sysadmin / mybin diretórioé anexado à PATH variável:
/ home / sysadmin / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: /
usr / bin: / sbin: / bin: / usr / games: / usr / local / games:/ home / sysadmin /
mybin
3.12 Etapa 12
Nas etapas a seguir, você copiará um comando (programa executável) para um diretório listado em a
PATH variável. Crie um programa shell Bash simples no diretório atual executando os seguintes
comandos:
chmod a + x hello.sh
Nota
/home/sysadmin/hello.sh
hello
3.14 Etapa 14
Observe que você não pode basta executar hello.sh, você deve incluir o caminho para o comando.
Execute o seguinte para verificar:
hello.sh
hello .sh
hello
Nota
what hello.sh
/home/sysadmin/mybin/hello.sh
3.16 Etapa 16
Quando um usuário abre um novo shell, durante o logon ou quando executa um terminal que inicia um
shell, o shell é personalizado por arquivos chamados inicialização (ou configuração ) arquivos. Esses
arquivos de inicialização definem o valor das variáveis, criam aliases e funções e executam outros
comandos que são úteis para iniciar o shell.
Cada shell usa arquivos de inicialização diferentes. Além disso, a maioria dos shells executa diferentes
arquivos de inicialização quando o shell é iniciado através do processo de login (chamado shell de login)
versus quando um shell é iniciado por um terminal (chamado shell sem login ou shell interativo).
Quando o Bash é iniciado como um shell interativo, ele executa o ~ / .bashrc arquivo.
Use o less comandopager para visualizar oda sua conta .bashrc arquivoe ver quais personalizações
são definidas por este arquivo:
less .bashrc
● # ~ / .bashrc: executado por bash (1) para não fazer login cartuchos.
● # consulte / usr / share / doc / bash / examples / arquivos de inicialização
(no pacote bash-doc)
● # para exemplos
●
● # Se não estiver executando interativamente, não faça nada
● caso $ - in
● * i *) ;;
● *) Retorna;;
● esac
●
● # não coloque linhas duplicadas ou linhas começando com espaço no histórico.
● # Ver bash (1) para mais opções
● HISTCONTROL = ignoreboth
●
● # anexa ao arquivo de histórico, não o substitui
● shopt -s histappend
●
● # Para definir o comprimento da história ver HISTSIZE e HISTFILESIZE em bash
(1)
HISTSIZE = 1000
Note
o grep O comando fornece a capacidade de filtrar o texto e exibirá apenas as linhas que contêm o
argumento passado para o comando, neste caso, PATH.
tail .bashrc
No exemplo acima, os >> caracteressão usados para redirecionar a saída do echo comandoe anexá-la
na parte inferior do .bashrc arquivo. O tail comandoexibe as últimas dez linhas do .bashrc
arquivopara que você possa verificar se o arquivo foi editado com êxito.
Nota O
redirecionamento e oda cauda comandoserão abordados com mais detalhes posteriormente no curso.
3.19 Etapa 19
O ~ / .bash_history arquivotambém pode ser considerado um arquivo de inicialização, uma vez que
o Bash também lê esse arquivo ao iniciar. Por padrão, esse arquivo contém um histórico dos comandos
que um usuário executou no shell Bash.
O histórico de comandos permitirá que o usuário use a tecla de setacima ↑ parapara visualizar os
comandos anteriores. A cada pressão da seta para cima, o shell exibe mais um comando na lista de
histórico.
Se o usuário voltar muito longe, a tecla de seta ↓ pode ser usada para retornar a um comando mais
recente. Depois que o comando correto é exibido, a Enter teclapode ser pressionada para executá-lo.
As teclas de seta esquerda ← e direita → também podem ser usadas para posicionar o cursor dentro
do comando. As Backspace e Delete teclassão usadas para remover texto e caracteres adicionais
podem ser digitados na linha de comando para modificá-lo antes de pressionar a Enter teclapara
executá-lo. As etapas a seguir demonstrarão como usar o histórico de comandos.
cp / etc / host.
cp: não é possível stat '/ etc / host': Esse arquivo ou diretório
3.20 Etapa 20
O nome do arquivo deve ser hostsnão existe, não host. Para corrigir isso, pressione a seta para cima
↑ uma vez, use as teclas de seta esquerda ← para ir para o espaço após o host, digite um se
pressione a Enter tecla: tecla de
Enter Chave
history
33 history
3.22 Etapa 22
O ! ponto de exclamação é um caractere especial para o shell Bash para indicar a execução de um
comando na lista de histórico. Existem muitas maneiras de usar o ! caractere de exclamação para
reexecutar comandos; por exemplo, a execução de dois caracteres de exclamação repetirá o comando
anterior.
!!
● sysadmin @ localhost:~$ !!
● 1 bash
● 2 name = "bob"
● 3 echo $ name
● 4 export AGE = 25
● 5 echo $ AGE
● 6 bash
● 7 set
● 8 bash
● 9 env
● 10 nome
● não configurado 11 unset AGE
● 12 eco $ nome
● 13 eco $ AGE
● 14 eco $ PATH
● 15 que ls
● 16 qual zzz
● 17 tipo zzz
● 18 mkdir mybin
● 19 PATH = $ PATH: / home / sysadmin / mybin
● 20 eco "eco olá"> hello.sh
● 21 chmod a + x hello.sh
● 22 /home/sysadmin/hello.sh
● 23 olá .sh
● 24 m hello.sh / home / sysadmin / mybin
● 25 hello.sh
● 26 que hello.sh
● 27 mais .bashrc
● 28 grep PATH .bashrc
● 29 echo 'PATH = $ PATH: / home / sysadmin / mybin' >> .bashrc
● 30 tail .bashrc
● 31 cp / etc / host.
● 32 cp / etc / hosts.
33 history
3.23 Etapa 23
Execute oanterior tail comando, digitando uma exclamação ! caractere seguido pelo número antes do
tail comandona lista de histórico. Por exemplo, dada a saída anterior, você executaria o seguinte:
O número no histórico de comandos em nosso ambiente virtual pode ser diferente do exemplo.
! 15
sysadmin @ localhost:~$ ! 15
which ls
/ bin / ls
3.24 Etapa 24
Execute os seguintes comandos para que o recurso history ignore comandos duplicados:
● HISTCONTROL = ignoredups
● ls
● ls
history |cauda
46 história | tail
Observe que apenas um dos ls comandosfoi gravado. A história | Atail linha de comandoobtém a
saída do history comandoe exibe apenas as últimas dez linhas dessa saída.
3.25 Etapa 25
Para impedir que o recurso de histórico grave comandos que começam com um caractere de espaço,
execute os seguintes comandos. (Observe que o comando cal usado no exemplo abaixo tem um espaço
à sua frente.):
● HISTCONTROL = ignorespace
● date
● cal
history |cauda
3,26 Passo 26
Para apagar a lista de histórico, use a -c opçãocom o história: comando
história -c
1 história