<Anterior | Conteúdo | Próxima>
3.2. Orientação no sistema de arquivos
3.2.1. O caminho
Quando você deseja que o sistema execute um comando, quase nunca é necessário fornecer o caminho completo para esse comando. Por exemplo, sabemos que o ls o comando está no / bin diretório (verifique com qual -a ls), mas não precisamos inserir o comando / bin / ls para o computador listar o conteúdo do diretório atual.
O PATH a variável de ambiente cuida disso. Essa variável lista os diretórios no sistema onde os arquivos executáveis podem ser encontrados e, assim, poupa ao usuário muita digitação e memorização de localizações de comandos. Portanto, o caminho contém, naturalmente, muitos diretórios contendo caixa em algum lugar em seus nomes, como o usuário abaixo demonstra. o eco comando é usado para exibir o conteúdo ("$") da variável PATH:
Roger:> echo $ PATH
/ opt / local / bin: / usr / X11R6 / bin: / usr / bin: / usr / sbin /: / bin
Roger:> echo $ PATH
/ opt / local / bin: / usr / X11R6 / bin: / usr / bin: / usr / sbin /: / bin
Neste exemplo, os diretórios / opt / local / bin, / usr / X11R6 / bin, / usr / bin, / usr / sbin e
/ bin são posteriormente pesquisados para o programa necessário. Assim que uma correspondência for encontrada, a pesquisa será interrompida, mesmo que nem todos os diretórios do caminho tenham sido pesquisados. Isso pode levar a situações estranhas. No primeiro exemplo abaixo, o usuário sabe que existe um programa chamado Enviar SMS para enviar uma mensagem SMS, e outro usuário no mesmo sistema pode usá-lo, mas ela não pode. A diferença está na configuração do PATH variável:
[jenny @ blob jenny] $ Enviar SMS bash: sendms: command not found [jenny @ blob jenny] $ echo $ PATH
/ bin: / usr / bin: / usr / bin / X11: / usr / X11R6 / bin: / home / jenny / bin [jenny @ blob jenny] $ su - tony
Senha: tony: ~> que envia mensagens
Sendms é / usr / local / bin / Sendms
tony: ~> echo $ PATH
/home/tony/bin.Linux: / home / tony / bin: / usr / local / bin: / usr / local / sbin: \
/ usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin
[jenny @ blob jenny] $ Enviar SMS bash: sendms: command not found [jenny @ blob jenny] $ echo $ PATH
/ bin: / usr / bin: / usr / bin / X11: / usr / X11R6 / bin: / home / jenny / bin [jenny @ blob jenny] $ su - tony
Senha: tony: ~> que envia mensagens
Sendms é / usr / local / bin / Sendms
tony: ~> echo $ PATH
/home/tony/bin.Linux: / home / tony / bin: / usr / local / bin: / usr / local / sbin: \
/ usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin
Observe o uso do su facilidade (troca de usuário), que permite executar um shell no ambiente de outro usuário, desde que saiba a senha do usuário.
Uma barra invertida indica a continuação de uma linha na próxima, sem um Entrar separando uma linha da outra.
No próximo exemplo, um usuário deseja ligar para o wc (contagem de palavras) para verificar o número de linhas em um arquivo, mas nada acontece e ele tem que interromper sua ação usando o Ctrl+C combinação:
jumper: ~> teste wc -l
(Ctrl-C)
jumper: ~> qual wc
wc está com hash (/ home / jumper / bin / wc)
jumper: ~> echo $ PATH
/ home / jumper / bin: / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin
jumper: ~> teste wc -l
(Ctrl-C)
jumper: ~> qual wc
wc está com hash (/ home / jumper / bin / wc)
jumper: ~> echo $ PATH
/ home / jumper / bin: / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin
O uso do qual comando nos mostra que este usuário tem um caixa-diretório em seu diretório inicial, contendo um programa que também é chamado wc. Uma vez que o programa em seu diretório inicial é encontrado primeiro ao pesquisar o
caminhos após uma chamada para wc, este programa "feito em casa" é executado, com entradas que provavelmente não entende, portanto, temos que interrompê-lo. Para resolver esse problema, existem várias maneiras (sempre há várias maneiras de resolver um problema no UNIX / Linux): uma resposta pode ser renomear o usuário wc programa, ou o usuário pode fornecer o caminho completo para o comando exato que deseja, que pode ser encontrado usando o -a opção para qual comando.
Se o usuário usa programas em outros diretórios com mais frequência, ele pode alterar seu caminho para procurar em seus próprios diretórios por último:
jumper: ~> exportar PATH = / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin: / home / jumper / bin
jumper: ~> exportar PATH = / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin: / home / jumper / bin