问题如下图
当前目录下存在sam-dump程序,然而运行的时候,还是需要添加./程序名,才可以运行该程序。这与DOS命令操作符中的操作存在差别。这是为何?分析原因
在window下,如需在cmd命令行中输入窗口中运行某一程序,则需要进入到该程序所在目录才可以直接运行该程序。如果需要在不进入该目录下就运行程序的话,则需要在安装完改程序后,设置环境变量,将bin目录添加到系统环境变量中。即想要在终端运行程序,必须要程序所在的绝对路径或相对路径,以告诉终端我想要运行的程序在哪里。
在Linux中,.字符表示工作目录,斜杠/则是路径分隔符,用于工作目录和文件名。由于SRAtoolkits为非安装软件,解压即可用,解压后其bin文件下的程序并不包含在Linux系统的环境($PATH)。Linux系统在不指定路径的情况下运行程序时会只搜索环境变量$PATH,而在指定了路径的情况下,则搜索指定路径。这就是为何会造成上述问题的原因。
环境变量
环境变量($PATH):决定了shell将到哪些目录中寻找命令或程序,$PATH的值是一系列目录,当你运行一个程序时,Linux 在这些目录下进行搜索。
运行echo $PATH命令,即可查看到当前所有环境变量的值。
可以通过which ls查看某一命令的bin目录的具体路径。
Linux终端命令搜索规则
如果在路径名中存在 ./ 字符,那么就不搜索\ $PATH。
如果 ./ 不在路径名中,那么只在 $PATH 中搜索。
为命令配置环境变量
参考Linux-配置环境变量 ()。
拓展
~ 表示主目录,也就是当前登录用户的用户目录。例如,我的拥护名是shpc,则~表示/home/shpc
/是指根目录:就是所有目录最顶层的目录。
./表示当前目录,./一般需要和其他文件夹或者文件结合使用,指代当前目录下的东西。
..表示上级目录,../ 指代上级目录下的东西。
Linux 终端中可以通过ctrl + shift + c 来进行复制和ctrl + shift + v来黏贴(在window下ctrl + c 复制的内容来到Linux终端后也可以ctrl + shift + v来黏贴到指定位置。)