Encontre um arquivo no caminho sem “qual”?

11

Eu sou (de alguma forma) capaz de executar um script:

$ assemble.sh file
... [output]

Mas which não consegue encontrar:

$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
  1. Como isso é possível?
  2. Como posso encontrar onde esse arquivo é?

Estou usando o bash.

    
por Xodarap 13.03.2011 / 21:39

5 respostas

15

Use este comando: type assemble.sh

Funciona em uma variedade de shells e mostra apenas o primeiro resultado.

    
por 13.03.2011 / 22:26
6

Ou divida o caminho e use-o em find - a primeira correspondência deve ser a solução

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit

type é claro mais fácil.

    
por 14.03.2011 / 03:09
4

Você pode estar usando o bash, mas a sintaxe da saída which mostra que você usa o antigo which escrito em csh. O PATH aparece entre parênteses e os diretórios no PATH têm entradas como /opt/SUNWspro/bin e /usr/ccs/bin , que só fazem sentido no Solaris. Isso é consistente: o Solaris usou o csh which .

Aqui está o meu palpite: você tem um PATH para o bash e outro para o csh. Isso pode ser um problema no sistema. Pelo que me lembro, o Solaris mantém arquivos / etc / profile e / etc / cshrc para configuração de PATH em todo o sistema. Esses dois arquivos de inicialização podem definir diferentes variáveis PATH para diferentes shells. Faça "echo $ PATH" no bash e veja se ele concorda com o que o comando which imprime como uma string PATH.

    
por 13.03.2011 / 22:19
4
command -v assemble.sh

Informação

-v        print a description of COMMAND similar to the 'type' builtin
    
por 01.07.2013 / 11:23
0

Você pode usar locate assemble.sh para encontrar o local do arquivo.

    
por 13.03.2011 / 22:58

Tags