![Linux 在运行可执行文件时的命令行行为(Ubunto/Deb)](https://linux22.com/image/144575/Linux%20%E5%9C%A8%E8%BF%90%E8%A1%8C%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E6%97%B6%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%A1%8C%E4%B8%BA%EF%BC%88Ubunto%2FDeb%EF%BC%89.png)
@user-123:~$ Downloads/execfile-3.4/execfile
@user-123:~$
@user-123:~$ cd Downloads/execfileparentdir-3.4/
@user-123:~/Downloads/execfileparentdir-3.4$ execfile
execfile: command not found
@user-123:~/Downloads/execfileparentdir-3.4$ ./execfile
@user-123:~/Downloads/execfileparentdir-3.4$
./
使用后面的具体原因是什么execfile
?
请注意,我不是在询问 的功能./
。换句话说,我想知道为什么为了从终端运行可执行文件,它需要从当前目录到给定文件的地址?为什么当我们在当前目录中时,像终端在其他情况下的行为方式一样,自动识别文件名,以便我们只需键入文件名而不是在文件名./
后面添加 和 来运行它?
编辑:
原因之一可能是安全性并防止用户意外执行另一个(可能是恶意的)文件。然而,这是一个非常可信的理由,但他们不是为了它而牺牲了规则的一致性吗?难道没有其他方法来处理这个问题并且不在统一规则中例外(当前目录中文件名的预测)吗?这听起来像是一次微不足道的交流,但我想确定这是否是最小的一次。
答案1
这是 UNIX 和 Linux 中的体系结构决定。主要原因是安全。您不想仅仅因为您位于文件所在的目录中就执行随机文件。这使您可以更精确地控制可执行文件的可信来源。
当然,您可以在路径中添加当前目录并具有类似 MS Windows 的行为。该命令如下所示,但不要这样做,因为它存在安全风险。
导出路径=$路径:.