Diretórios de pesquisa de terminal do OSX

0

Eu uso o cygwin no Windows e comecei a usar um mac. Eu estou me perguntando por que parece que os caminhos de busca não funcionam como deveriam.

Se eu tiver um programa em /usr/bin/prog e eu o excluir. Parece continuar tentando esse caminho exato em vez de procurá-lo novamente (digamos que eu o mova para /usr/local/bin ).

Isso é devido ao aplicativo terminal ou é algo específico para o mac? Além disso, se eu quiser instalar uma nova versão do python em /usr/local/bin , é o caminho certo para removê-lo de /usr/bin/ ?

    
por vonhogen 23.06.2011 / 00:01

4 respostas

3

Você não diz qual shell está usando, embora sua pergunta esteja marcada com bash . O shell padrão do Mac OS X é tcsh , que Se você estiver usando tcsh ou csh, eles armazenam em cache uma tabela de itens em seu caminho. Para atualizar a tabela, emita o comando rehash no prompt do shell.

Você precisará fazer isso sempre que mover ou excluir um executável ou adicionar algo ao seu caminho.

Se você realmente estiver usando o bash shell, isso não se aplica.

    
por 23.06.2011 / 05:04
2

O terminal OS X tentará os caminhos declarados em sua variável PATH, em ordem, até encontrá-lo ou ficar sem locais para verificar. Você pode verificar qual é a variável PATH digitando o seguinte no prompt de comando:

echo $PATH

Você pode executar o seguinte no prompt de comando para ver onde seu shell está encontrando o programa em questão:

which prog

Se você quiser atualizar o python, recomendo instalá-lo no mesmo local que ele já existe. Se você quiser ter mais de uma versão instalada em sua máquina por vez, instalá-la em / usr / local / bin seria uma escolha lógica da IMO.

    
por 23.06.2011 / 00:09
0

Pelo que entendi quando você executa um programa, ele irá procurar as pastas em sua variável $ PATH, que é separada por ":", por exemplo.

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin

O seu $ PATH está configurado corretamente? Para descobrir isso, use:

echo $PATH

Você também pode usar o which python para encontrar qual versão e de onde ela está sendo executada. Eu acredito que esta é também uma esquerda para a direita pesquisa, por isso, terá o primeiro programa chamado python encontra no caminho.

    
por 23.06.2011 / 00:09
0

Em vez de usar

which prog

você pode usar o Bash embutido

type -P prog

# some examples using: type -P cmd
$(type -P prog) arg1 arg2 arg3 ...
myls=$(type -P ls) && $myls -l

Para mais informações, consulte

help type

# The -P flag forces a PATH search for each NAME, even if it is an alias,
# builtin, or function, and returns the name of the disk file that would
# be executed.

Ainda outra opção pode ser tentar

help command
command -p prog

HTH

    
por 23.06.2011 / 20:33