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.
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.
É 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.
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'
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:
Devemos levar em conta que:
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:
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:
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.
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.
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