Querendo ou não, nos sistemas GNU/Linux somos sempre os administradores dos nossos sistemas e aparecem cada vez mais utilitários gráficos que permitem executar tarefas de administração. Sem dúvidas, a linha de comandos (shell, terminal, console, etc.) continua sendo uma ferramenta poderosa e com um uso descomplicado.
Vantagens e desvantagens da linha de comando
O emprego da linha de comando continua sendo
muito mais rápido que o uso do ambiente gráfico, se levarmos em conta o tempo de carregamento da interface e a busca com o mouse, no desktop.
Utilizando o ambiente gráfico não se precisará da
tecla tab para completar o comando, nem do histórico que permite repetir um comando, nem dos aliases para grandes comandos, etc.
O inconveniente com o shell, é que teremos que usar as duas mãos para escrever no teclado. Com o mouse é preciso uma só, pelo menos até ligar as zonas oferecidas pelo utilitário gráfico.
No Linux, teremos acesso à documentação de cada comando e como explora o sistema se utilizarmos os
comandos “man” e
“info”. Na internet podemos encontrar muitas traduções dessas páginas.
O que é o Shell
É um
software parte do sistema, cuja função é tratar os comandos ou linhas digitadas, a partir do teclado.
Para ver a lista de shells disponíveis no sistema, consulte o arquivo:
/etc/shells
cat /etc/shells
No Linux, o usuário tem, por padrão, um
shell de conexão . Consulte o arquivo
/etc/passwd para ver que o último campo se parece com algo como
/bin/”<algomais>”. É este o seu shell de conexão.
Para ver os
shells dos usuários podemos usar o comando:
cat /etc/passwd | cut -d: -f1,7
E, para
um usuário em particular, se pode completar o comando da seguinte maneira:
cat /etc/passwd | cut -d: -f1,7 | grep usuário
Se estiver no
modo gráfico pode abrir um terminal e em seguida escrever a linha de comandos.
No
GNU/Linux dispomos de
6 consoles virtuais, cujos acessos à interface gráfica são feitos por meio de combinações das seguintes teclas:
Ctrl+ALT+Fn logo:
n é um digito de
1 al 6.
Pelo console virtual
pode-se passar o outro com a combinação:
ALT+Fn, (com um número de 1 a 6).
Para
voltar ao modo gráfico a partir de um console virtual, pressione:
ALT+F7.
Em um shell é preciso inserir
um comando (prompt) do tipo:
usuário@debian: ~$
Se em lugar do
$ você ver
#, então está conectado como
root (a menos, é claro, que tenha modificado sua configuração).
A solicitação para inserir um comando, varia em função do sistema operacional e pode ser modificado em outra variável de ambiente:
PS1.
Definir
Uma variável é um container de memória que armazena um dado podendo
variar durante a execução de um programa. Ela tem um nome e um conteúdo.
A variável que tratamos neste artigo se chama
PATH e seu conteúdo é uma cadeia que contém
caminhos e diretórios separados por dois pontos:
Para mostrar o conteúdo de
uma variável no shell devemos escrever:
echo $variable
No caso da
variável PATH deve-se escrever:
echo $PATH
¡IMPORTANTE! GNU/Linux diferencia as MAIÚSCULAS das minúsculas.
Para uma
apresentação mais agradável podemos usar o comando:
echo $PATH | tr : \\n
Na continuidade
outras alternativas que permitem mostrar o conteúdo da PATH:
printenv PATH
env | grep -i PATH | cut -d= -f2
perl -e 'print $ENV{PATH},"\n"'
perl -e '$,="\n" and print split(":",$ENV{PATH}),""'
perl -e '($_=$ENV{PATH})=~s/:|$/\n/g and print'
Seção de análise
Vimos que a
variável PATH contém uma lista de diretórios separados por dois pontos. Estes são os diretórios nos quais o shell busca o comando que o
usuário escreve a partir do teclado. Essa busca não é realizada na mesma ordem em que estão os diretórios na variável:
Exemplo:
carlos-vialfa@debian: ~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/carlos-vialfa/bin
Quando escrevemos um comando
o shell buscará primeiro no
/usr/local/bin, depois no
/usr/bin, em seguida no
/usr/bin/X11, na continuidade, no
/usr/games e, por fim, no
/home/carlos-vialfa/bin.
A partir do momento em que o shell encontra o comando, ele detém a busca e
executa o comando encontrado.
Podemos escrever um comando utilizando:
- Su nome .
- O caminho absoluto (/bin/cat /etc/passwd ).
- O caminho relativo (utilizando "." o ".." em geral para os programas, são os scripts que não se encontram na variável PATH).
Devemos levar em conta que:
- . Quer dizer diretório atual
- .. [e o diretório pai
Ao escrever um comando, podemos nos deparar com
várias situações:
1. O comando é único e se encontra em um
dos diretórios.
2. O comando não é único e se encontra em
vários diretórios.
3. O comando não se encontra em
nenhum diretório.
No
primeiro caso não causa nenhum problema insolúvel. Se acontecer um erro na execução, provavelmente foi causado pela
sintaxe.
Solução: consulte o manual do comando com
“man”.
No
segundo caso as coisas tampouco são complicadas. Suponhamos que dispomos de um comando que se encontra no
/usr/bin instalado partir das fontes de uma
versão recente do comando e, cujo executável se encontra no
/usr/local/bin.
Então, o que ocorre se chamarmos o comando pelo seu nome: shell olha o PATH começando pelo
primeiro diretório encontrado.
No nosso caso, encontra o comando
/usr/local/bin e será aquele que se executará no:
/usr/local/bin/prog .
Por outro lado, se desejarmos, de qualquer jeito, executar o comando
prog (que se encontra no
/usr/bin), deveremos utilizar o caminho absoluto
/usr/bin/prog.
O
terceiro caso apresenta
duas situações:
- O comando existe porém não se encontra em nenhum diretório da nossa PATH.
- O comando não existe.
Nos dois casos a mensagem de erro será
'command not found' porque possui comandos que só o
root pode utilizar.
Solução: conecte-se como root chamando
su ou
su -. Para mais informações visite:
Utilizar o comando su.
Tem comandos que se encontram em um diretório que
não se encontra na variável PATH.
Solução:
- Utilizar o caminho absoluto.
- Adicionar o diretório à sua vaiável PATH.
Se um script é criado e não consegue ser executado, independentemente do caminho especificado, verifique os privilégios de execução</bold> no script (
ls -l script).
Se o comando não existe, instale o programa no
modo administrador.
Adicione um diretório à variável PATH
- Unicamente para a seção ativa:
Se desejamos adicionar por exemplo:
/home/user/meus_prog à variável PATH, é preciso escrever no shell:
export PATH=$PATH:/home/user/meus_prog
para ter o diretório
no final da PATH.
ou:
export PATH=/home/user/mis_prog/:$PATH
para ter o diretório
no início da PATH.
Agora podemos usar o programa simplesmente escrevendo
nosso nome.
Ao nos desconectarmos,
PATH retomará ao
seu valor por padrão, então /home/user/mis_prog, não existirá mais aqui.
Se desejamos configurar
PATH de forma permanente devemos editar o arquivo de configuração do nosso shell de conexão.
Já que, o shell
BASH é mais usado, devemos editar seu arquivo:
/home/user/.bashrc.
O
comando:
echo 'export PATH=$PATH:/home/user/mis_prog' >> /home/user/.bashrc
Dessa forma, a cada conexão a PATH conterá seu diretório:
/home/user/prog.
Esta operação pode ser executada pelo usuário
user.
Mais informações
A variável
PATH é somente uma variável entre as
várias dezenas que contém o shell.
Podemos mostrar as variáveis ambientais, mesmo ao desconhecer seus números com os seguintes comandos:
printenv
env
set
export
Foto: © Everypixel