如果你看这里的第(6)点:http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/cygwin/part3/
为什么我们要在.exe文件之前键入./才能运行它?
为什么我们不能立即键入hello.exe?
谢谢.
通常因为聪明的人.
在路径上没有他们当前的目录:-)
该路径是一个环境变量/bin:/usr/bin:/usr/sbin
,它是一个用于查找可执行文件的目录列表,例如当您键入时hello
.
与Windows不同,许多UNIX shell不会自动在当前目录中搜索可执行文件.它们必须列在路径中,否则它们不会运行.
那是因为否则实际上是一个攻击向量.例如,如果您ls
在主目录中创建一个程序并告诉管理员其中有一个有趣的文件,他们可能会转到您的目录并进入ls
以查看其中的内容.
对于在"真实"位置之前具有当前目录的愚蠢管理员ls
,它们现在已被泄露,因为您的代码以其完全权限运行.
这就是他们倾向于不这样做的原因.
有些人(不是我)将会把.
他们的道路上,使他们的生活更轻松,但即使是这样,他们就会把它放在结尾,这样其他位置首先搜索.
管理员没有那种信任的奢侈.