Bash - A variável do ambiente PATH

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.

  • De maneira permanente:

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

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'Bash - A variável do ambiente PATH', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade