[Bash] A variável de ambiente PATH

última modificação em 10 de Agosto de 2009 às 09:18 por ninha25
Publicado por ninha25

A variável de ambiente PATH




I. Perâmbulo


Com o GNU/Linux querendo ou não, nós somos administradores do nosso sistema. Além do mais, com o GNU/Linux existem utilitários gráficos que permitem executar as tarefas de administração.

No entanto, a obscura linha de comando conhecida sob diversas denominações (shell, termina, console, tec.) continua sendo um utilitário muito potente e fácil de manipular.
Assim que as bases forem assimiladas, você se surpreenderá com a facilidade de utilização da linha de comando.

<parênteses>
O emprêgo da linha de comando continua sendo muito mais rápdo do que a utilização de um utilitário gráfico. Se você contar o tempo de download da interface, a busca (física) do mouse no seu escritório, sem contar que você será obrigado, inevitavelmente, a efetuar a digitação, então, e como resultado, você se privará de algumas vantagens que lhe oferece a dita « linha de comando », você não beneficiará nem da tecla tab para «finalizar a digitação automatica » do comando, nem do histórico que permite repetir o comando, nem do alias para os comandos longos, etc.
O incoveniente para o Shell é o fato que você não poderá segurar sua xícara de café ou o seu cigarro em uma mão enquanto a outra digita no teclado.
Com o mouse é possível, até o momento em que você deverá completar as zonas propostas pelo seu estimado utilitário gráfico.


Mas talvez que com o Shell você pare de fumar….
O shell é mais barato que Niquitin, etc.?!

Mas você está ainda sob GNU/Linux e a escolha pertence a você.
</parênteses>

Como a liberdade tem um prêço, bom, somos obrigados a pagá-la.
No caso dos sistemas GNU/Linux o prêço a pagar é a liberdade de ler a documentação disponível no seu sistema, veja as páginas "man" e o comando "info", para explorar melhor seu sistema.

Pode-se também ver as páginas "man" com o navegador Konqueror utilizando o URL man:/
Na internet encontram-se traduções em português para as páginas « man ».
O comando man
Forum Linux Kheops

II. O que é o Shell ?


É um software que faz parte do sistema e que tem como função tratar os comandos ou linhas de comandos das entradas no teclado.

Para ver a lista dos Shells disponíveis em seu sistema, consulte o arquivo
/etc/shells
cat /etc/shells
Um utilizador Lnux detém, por padrão, um shell de conexão.

Consulte o arquivo /etc/passwd e você verá que o último campo é qualquer coisa parecida com /bin/<alguma coisa>. Trata-se de seu shell de conexão.
Para ver os shells dos utilizadores, pode-se utilizar o comando
cat /etc/passwd | cut -d: -f1,7
Para um utilizador em particular, completa-se o comando da seguinte forma:
cat /etc/passwd | cut -d: -f1,7 | grep utilisador


Se você estiver em modo gráfico você poderá abrir um terminal (xterm,gterm,konsole,...) e em seguida escrever suas linhas de comando.

Note que em GNU/Linux dispõe-se de 6 consoles virtuais, cujo acesso se faz com as combinações das seguintes teclas Ctrl+ALT+Fn ou
n
é um número de 1 à 6.

A partir de um console virtual, você poderá passar para um outro com a combinação ALT+Fn, (com n de 1 à 6).
Para retornar em modo gráfico a partir de um console virtual, faça
ALT+F7.

No shell, vê-se um convite de comando (prompt) do tipo :
utilisador@debian: ~$

Se no lugar de $ você ver #, então saiba que você está conectado como root, a menos que você tenha modificado sua configuração.

O convite do comando difere em função do sistema operacional e pode ser modificado graças a uma outra variável de ambiente PS1.

III. Definição


Comecemos em primeiro com o termo genérico de variável.
Uma variável , é um contentor de mémoire que armazena um dado que poderá mudar durante a execução do programa.

Assim, uma variável tem um nome e um conteúdo mas nós não entraremos nos detalhes da programação para explicar o tipo de variável e seu conteúdo.
Nós nos contentaremos por enquanto em saber que a variável que falamos chama-se PATH e que seu conteúdo é uma rede que contém os caminhos de repertórios separados por dois pontos :

Para afixar o conteúdo de uma variável no shell, você deve escrever
echo $variável
No caso da variável PATH, você deverá escrever
echo $PATH
IMPORTANTE! Respeite a quebra. GNU/Linux diferencia as MAIÚSCULAS riosdas minúsculas.

Para uma vizualização mais agradável você pode utilizar o comando
echo $PATH | tr : \\n
Eis outras maneiras de afixar o conteúdo de PATH (como indicativo, justo para assinalar que existem diversas alternativas para chegar a seus objetivos..).
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'
É claro é a preferída em relação da mais curta.
Ver este artigo O que é uma variável de ambiente

IV. Sessão de dissecação


Viu-se que a variável PATH contém uma lista de repertórios separados por dois pontos. :

São repertórios nos quais o shell busca o comando que é escrito no teclado.
A busca se faz na ordem dos repertórios contidos na variável PATH.

Exemplo :
lami20j@debian: ~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/lami20j/bin
Quando escreve-se um comando o shell vai procurar primeiramente no /usr/local/bin, depois no /usr/bin, depois no /usr/bin/X11, depois no /usr/games e para terminar em /home/lami20j/bin.
Quando o shell encontra o comando, ele pára de buscar excutando o comando encontrado..

Um comando pode ser escrito utilizando :
- seu nome
- o caminho absoluto ( /bin/cat /etc/passwd )
- o caminho relativo ( utiliza-se o "." ou ".." em geral para os programas ou scripts que não se encontrem no PATH)
. é o repertório corrente
.. é o repertório parente
Escrevendo um comando, pode-se encontrar-se em diversas situações :
1.o comando é único e encontra-se em um dos repertórios
2. O comando não é único e encontra-se em diversos repertórios
3. o comando não encontra-se em nenhum dos repertórios

1. No primeiro caso, as coisas são simples.
Se você tem um erro de execução, é seguramente por causa da sintaxe.
Solução : consultar o manual do comando

2. No o segundo caso, as coisas não são ainda muito complicadas.
Supondo que dispõe-se de um comando que encontra-se em /usr/bin instalado a partir da fonte em uma versão mais recente do comando e que o executável encontre-se em /usr/local/bin.

Se chamarmos o comando pelo seu nome, o que acontece?
O shell olha na PATH inicada pelo primeiro repertório encontrado.
No nosso caso, ele encontra o comando no /usr/local/bin então será /usr/local/bin/prog quem se executará.

Porém se quizermos assim mesmo executar o comando prog que se encontra no /usr/bin, então é preciso utilizar o caminho absoluto /usr/bin/prog

3. O 3° caso contém 2 situações

-O comando existe mas não se encontra em nenhum repertório de nossa PATH
- O comando não existe

Nos dois casos, a mensagem de erro será 'command not found'

Ma a interpretação não será a mesma.
Existem comandos onde somente o root pode utilizar.
Solução : conecte-se como root com su ou su -
http://pt.kioskea.net/faq/sujet-1018-linux-utilizar-o-comando-su
Tem comandos que encontram-se no repertório e que não se encontram em sua variável PATH.
Solução :
- utilizar o caminho absoluto
- acrescentar o repertório à sua PATH

Você criou um script mas não consegue executá-lo com nenhum dos caminhos específicos ?
Solução : – verifique os direitos de execução no script ( ls -l script )

O comando não existe, neste caso eu suponho que você saiba o que fazer. E se você não souber, eis aqui a solução.
- Solicite ao administrador para instalar o programa.

Pode-se buscar a existência de um comando utilizando o whereis ou o which
whereis comando 
which –o  comando 
No caso de which a opção -a permitiu ver todos os caminhos correspondentes.
Sem a opção -a será somente o primeiro repertório que conterá o comando afixado, coisa que seguramente não queremos se o comando encontra-se em vários repertórios.

V. Acrescentar um repertório na variável PATH


- somente para a sessão em andamento

Se quizermos acrescentar por exemplo /home/user/meus_prog na variável PATH, no shell, escreva
export PATH=$PATH:/home/user/meus_prog
para ter o repertório em primeiro no PATH.

Agora, você utiliza seu programa escrevendo seu nome, simplesmente.

Na desconexão, PATH retomará seu valor por padrão, então /home/user/meus_prog não existirá mais no PATH.

- de maneira permanente

Se você configurar PATH de maneira permanente, você deve editar o arquivo de configuração de seu shell de conexão.
Como na maioria dos casos é o shell que é utilizado, você deve editar seu arquivo /home/user/.bashrc.

Para tanto, você utilizará um editor de texto ou simplesmente um comando para facilitar a tarefa.
Sim, seguidamente a utilização da linha de comando torna as coisas bem mais fáceis do que a utilização do mouse, sobretudo nas tarefas de administração (opinião pessoal)
Eis aqui o comando
echo 'export PATH=$PATH:/home/user/meus_prog' >> /home/user/.bashrc 
Assim em cada conexão seu PATH conterá seu repertório /home/user/prog

Esta operação pode ser executada pelo utilizador user pois trata-se de seu ambiente.

VI. E depois…


A variável é somente uma entre várias dezenas que contém o shell.

Você pode afixar as variáveis de seu ambiente sem se preocupar com o seu nome ( pode ser que você nem conheça).

Para tanto você tem à sua disposição diversos comandos
printenv
env
set
export



Artigo original publicado por Lami20j
Melhores respostas por « A variável de ambiente PATH » em :
Variáveis de ambiente Ver Variáveis de ambiente Uma variável de ambiente é um valor dinâmico, carregado na memória, podendo ser utilizado por vários processos que funcionam simultaneamente. Na maior parte dos sistemas de exploração, o lugar de certas livrarias,...
Ambiente Cliente/Servidor Ver Apresentação da arquitectura de um sistema cliente/servidor Numerosas aplicações funcionam de acordo com um ambiente cliente/servidor, o que significa que máquinas clientes (máquinas que fazem parte da rede) contactam um servidor, uma...
Executar un script shell VerExecução de um script Para poder executar um script ou um programa em linha de comando existe diversas possibilidades : *1. O caminho absoluto *2.O caminho relativo *3.Modificar a variável PATH *Nota: O Sha-Bang Em...
Reunir vários arquivos em um só VerReunir vários arquivos em um só Para reunir vários arquivos PDF em um só, pode-se utilizar PDFCreator (gratuito) que se utiliza como uma impressora. Para tanto : Abrir todos os arquivos PDF que se quer reunir Depois, para o primeiro...
Execução de um script Shell VerExecução de um script shell Para poder executar um script ou um programa em linha de comando existe diversas possibilidades : *1.O caminho absoluto *2. O caminho relativo *3. Modificar a variável PATH *Nota: O Sha-Bang Em...
Download My Pictures 3D Album VerÉ possível visualizar suas fotos no seu pc. Quase todos os programas propõem uma visualização através de um diaporama. Então para mudar e dar uma melhor visão de suas imagens, admire-as em um ambiente em 3D. My Pictures 3D Album oferece a...
Download Adobe Dreamweaver VerPrograma que oferece as mais competentes ferramentas para a criação de websites para o Mac do momento. Ele é também um dos melhores editores de websites com uma interface visual bastante clara e objetiva e um ambiente de códigos acessiveis e...
ISO 9000, ISO 9001 et ISO 9004 VerIntrodução à certificação ISO A certificação é o meio de certificar, através de um terceiro certificador, da aptidão de um organismo para fornecer um serviço, um produto ou um sistema conforme às exigências dos clientes e às exigências...
Sistema de exploração VerDescrição do sistema de exploração O computador só é capaz de fazer funcionar um programa informático (chamado às vezes aplicação ou software) através de um sistema operacional. A máquina deve estar em condições de efectuar diversas...
A gestão dos utilizadores sob Windows NT VerA noção de utilizador O WindowsNT é um sistema de exploração que permite gerir sessões, ou seja, aquando do arranque do sistema é necessário ligar-se (o termo logger que provém do inglês é geralmente utilizado) graças a um nome de...