algoritmo de busca para encontrar um comando shell

0

No meu exemplo, vou usar o comando shell "rake".

Qual é a seqüência de pesquisa que o Ubuntu usa para encontrar o que fazer quando o rake é invocado? por exemplo. procura um caminho especificado em .bash_profile, parece em algum outro lugar, etc.

    
por JohnMerlino 14.07.2013 / 23:50

1 resposta

0

Suponho que você o instalou por meio de rvm . Como você disse, seu PATH é modificado por .bashrc ou .bash_profile .

O que o shell faz é muito simples, ele olha para o seu comando e o divide com os espaços e procura pela primeira palavra (no seu caso, rake ). Em seguida, ele verifica a variável de ambiente PATH (consulte seu valor com echo $PATH ), que contém diretórios diferentes separados por ponto e vírgula ( : ). Divide-o com ponto-e-vírgula e depois percorre todos os diretórios para ver se existe um arquivo que você tem direitos para executar. Quando o encontra, o shell executa o resto das palavras como argumentos.

No caso de rvm , você deve ter /home/username/.rvm/rubies/ruby-1.9.3-p374@global/bin em você PATH . Ele deve encontrar um executável chamado rake , que então executa um executável chamado rake in /home/username/.rvm/gems/ruby-1.9.3-p374@global/gems/rake-10.0.3/bin , que executa /home/username/.rvm/gems/ruby-1.9.3-p374@global/gems/rake-10.0.3/lib/rake.rb (sua versão pode variar).

    
por Benoît Legat 15.07.2013 / 00:14