O arquivo existe, mas não pode ser executado a partir de outra pasta

0

Na minha máquina do Fedora 16, tenho um arquivo executável chamado 'WarpImageMultiTransform', e posso executá-lo quando eu faço o cd na pasta que o contém:

[huangchao@localhost bin]$ ./WarpImageMultiTransform --help
Usage: 
./WarpImageMultiTransform ImageDimension moving_image output_image  -R reference_image --use-NN   SeriesOfTransformations--(See Below) 

Mas quando eu tento executá-lo de outra pasta, ele diz que o arquivo não existe:

[huangchao@localhost antsIntro]$  ls /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform
/home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform
[huangchao@localhost antsIntro]$ ./home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform --help
-bash: ./home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform: No such file or directory

Alguém sabe por quê?

    
por chaohuang 19.02.2013 / 23:16

3 respostas

4

. no início de um caminho significa que o caminho é relativo ao diretório atual. / significa que é um caminho absoluto. Este comando:

ls /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform

lista o diretório absoluto. Mas o seu segundo comando:

./home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform --help

Significa: "execute /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform relativamente ao meu diretório atual ". Isso funcionará somente se seu diretório atual for / , já que será equivalente a chamá-lo sem o período.

Você precisa do período apenas para executar arquivos do diretório atual, outros dirs (relativos ou absolutos) não exigem um período.

    
por 19.02.2013 / 23:22
0

Eu encontrei a resposta. Apenas usando

[huangchao@localhost antsIntro]$ /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform --help

funcionará.

    
por 19.02.2013 / 23:21
0

Se você quiser ter acesso fácil a um executável de qualquer diretório, poderá adicionar o local do arquivo executável ao seu $PATH . Em sistemas * nix, se uma palavra for digitada em um terminal, o sistema pesquisará os diretórios no caminho do usuário para localizar um executável com esse nome.

  • Para ver o seu $ PATH atual

    echo $PATH
    
  • Para adicionar um diretório chamado new_dir ao seu $ PATH somente para a sessão atual do

    PATH=$PATH:/new_dir
    
  • Para adicionar um diretório chamado new_dir ao seu $ PATH para cada sessão (supondo que você esteja usando o bash), adicione esta linha ao seu arquivo $HOME/.bashrc

    PATH=$PATH:/new_dir
    

Então, no seu caso, você adicionaria essa linha a .bashrc :

PATH=$PATH:/home/huangchao/ANTs-1.9.x-Linux/bin/

Você poderá então executar WarpImageMultiTransform simplesmente digitando o nome do comando onde quer que esteja.

    
por 20.02.2013 / 00:14

Tags