在我的 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
然后,无论您身在何处,只需键入命令名称即可执行。