На моем компьютере с Fedora 16 у меня есть исполняемый файл с именем 'WarpImageMultiTransform', и я могу запустить его, когда перейду в папку, в которой он находится:

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

Но когда я пытаюсь запустить его из другой папки, он говорит, что файл не существует:

[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

Кто-нибудь знает почему?

3 ответа3

4

. в начале пути означает, что путь относительно текущего каталога. / означает, что это абсолютный путь. Эта команда:

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

перечисляет абсолютный каталог. Но ваша вторая команда:

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

Означает: «выполнить /home/huangchao/ANTs-1.9.x-Linux/bin/WarpImageMultiTransform относительно моего текущего каталога ». Это будет работать, только если ваш текущий каталог - / , так как это будет эквивалентно вызову его без точки.

Точка нужна только для выполнения файлов из текущего каталога, другие каталоги (относительные или абсолютные) не требуют точки.

0

Я нашел ответ. Просто используя

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

буду работать.

0

Если вы хотите иметь легкий доступ к исполняемому файлу из любого каталога, вы можете добавить местоположение исполняемого файла в вашу $PATH . В системах * nix, если слово вводится в терминал, система будет искать в каталогах по пути пользователя, чтобы найти исполняемый файл с этим именем.

  • Чтобы увидеть ваш текущий $ PATH сделать

    echo $PATH
    
  • Чтобы добавить каталог с именем new_dir в ваш $ PATH только для текущего сеанса, выполните

    PATH=$PATH:/new_dir
    
  • Чтобы добавить каталог с именем new_dir в ваш $ PATH для каждого сеанса (при условии, что вы используете bash), добавьте эту строку в ваш файл $HOME/.bashrc

    PATH=$PATH:/new_dir
    

Итак, в вашем случае вы бы добавили эту строку в .bashrc:

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

После этого вы сможете выполнить WarpImageMultiTransform просто введя имя команды, где бы вы ни находились.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .