Cygwin GCC C++编译器 - 为什么./?

Sim*_*ity -1 c++ gcc cygwin

如果你看这里的第(6)点:http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/cygwin/part3/

为什么我们要在.exe文件之前键入./才能运行它?

为什么我们不能立即键入hello.exe?

谢谢.

pax*_*blo 5

通常因为聪明的人.在路径上没有他们当前的目录:-)

该路径是一个环境变量/bin:/usr/bin:/usr/sbin,它是一个用于查找可执行文件的目录列表,例如当您键入时hello.

与Windows不同,许多UNIX shell不会自动在当前目录中搜索可执行文件.它们必须列在路径中,否则它们不会运行.

那是因为否则实际上是一个攻击向量.例如,如果您ls在主目录中创建一个程序并告诉管理员其中有一个有趣的文件,他们可能会转到您的目录并进入ls以查看其中的内容.

对于在"真实"位置之前具有当前目录的愚蠢管理员ls,它们现在已被泄露,因为您的代码以其完全权限运行.

这就是他们倾向于不这样做的原因.

有些人(不是我)将会.他们的道路上,使他们的生活更轻松,但即使是这样,他们就会把它放在结尾,这样其他位置首先搜索.

管理员没有那种信任的奢侈.