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/shellscat /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
whichwhereis 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