Plik istnieje, ale nie można go uruchomić z innego folderu

0

Na moim komputerze Fedora 16 mam plik wykonywalny o nazwie „WarpImageMultiTransform” i mogę go uruchomić, gdy włożę cd do folderu, który go zawiera:

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

Ale kiedy próbuję uruchomić go z innego folderu, mówi, że plik nie istnieje:

[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

Czy ktoś wie dlaczego?

chaohuang
źródło

Odpowiedzi:

4

.na początku ścieżki oznacza, że ​​ścieżka jest względna do bieżącego katalogu. /oznacza, że ​​jest to ścieżka absolutna. To polecenie:

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

wyświetla katalog absolutny. Ale twoje drugie polecenie:

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

Oznacza: „wykonaj /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform względem mojego bieżącego katalogu ”. Działa to tylko wtedy, gdy bieżącym katalogiem jest /, ponieważ będzie to równoznaczne z wywołaniem go bez kropki.

Kropka jest potrzebna tylko do wykonania plików z bieżącego katalogu, inne katalogi (względne lub bezwzględne) nie wymagają kropki.

gronostaj
źródło
0

Znalazłem odpowiedź Po prostu używam

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

będzie działać.

chaohuang
źródło
0

Jeśli chcesz mieć łatwy dostęp do pliku wykonywalnego z dowolnego katalogu, możesz dodać lokalizację pliku wykonywalnego do swojego $PATH. W systemach * nix, jeśli słowo zostanie wpisane do terminala, system przeszuka katalogi na ścieżce użytkownika, aby znaleźć plik wykonywalny o tej nazwie.

  • Aby zobaczyć aktualny $ PATH, wykonaj

    echo $PATH
    
  • Aby dodać katalog wywoływany new_dirdo $ PATH tylko dla bieżącej sesji, zrób to

    PATH=$PATH:/new_dir
    
  • Aby dodać katalog wywoływany new_dirdo $ PATH dla każdej sesji (zakładając, że używasz bash), dodaj ten wiersz do swojego $HOME/.bashrcpliku

    PATH=$PATH:/new_dir
    

Tak więc w twoim przypadku dodajesz tę linię do .bashrc:

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

Będziesz wtedy mógł wykonać WarpImageMultiTransform, wpisując nazwę polecenia gdziekolwiek jesteś.

terdon
źródło