文件存在但无法从另一个文件夹执行

文件存在但无法从另一个文件夹执行

在我的 Fedora 16 机器上,我有一个名为“WarpImageMultiTransform”的可执行文件,当我通过 cd 命令进入包含它的文件夹时,我可以运行它:

[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

有人知道为什么吗?

答案1

.路径开头的 表示该路径相对于当前目录。/表示它是绝对路径。此命令:

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 相对于我当前的目录“。这仅当您的当前目录是时才有效/,因为它相当于在没有句点的情况下调用它。

您只需要在当前目录中执行文件时才需要句点,其他目录(相对或绝对)不需要句点。

答案2

我找到了答案。只需使用

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

将工作。

答案3

如果您想要从任何目录轻松访问可执行文件,则可以将可执行文件的位置添加到$PATH。在 *nix 系统上,如果在终端中输入一个单词,系统将搜索用户路径中的目录以查找具有该名称的可执行文件。

  • 要查看当前的 $PATH,请执行以下操作:

    echo $PATH
    
  • 将名为的目录添加new_dir到您的 $PATH仅适用于当前会话

    PATH=$PATH:/new_dir
    
  • 要为每个会话添加一个名为 $PATH 的目录new_dir(假设您使用 bash),请将此行添加到文件$HOME/.bashrc

    PATH=$PATH:/new_dir
    

因此,对于您的情况,您需要将这一行添加到.bashrc

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

WarpImageMultiTransform然后,无论您身在何处,只需键入命令名称即可执行。

相关内容