基本的unix ./语法

时间:2012-03-11 19:56:19

标签: c++ macos unix terminal g++

我正在从OS X终端编译c ++程序:

> g++ a.cpp

然后我从终端运行程序:

> ./a.out

./语法是什么意思?这在某种程度上与./run 有关吗?

3 个答案:

答案 0 :(得分:7)

.表示“当前目录”,因此./a.out表示“当前目录中名为a.out的文件”。如果您只是键入a.out,而没有./,那么系统将查看路径($PATH)上的目录以查找程序,而不是查看当前目录

答案 1 :(得分:2)

dot-slash只是一条相对路径;它告诉shell从“dot”目录运行程序,即当前工作目录。它只有在程序设置了执行位时才有效(chmod + x a.out;编译器通常会为你处理这个)。

答案 2 :(得分:1)

在所有系统中,键入命令时,系统需要知道命令的位置。应该查找程序的位置列在名为PATH的环境变量中。 Windows会搜索您所在的目录以及PATH(我以前相信,但我很长一段时间没有使用过Windows),如果它在当前目录中找到了具有正确名称的可执行文件,那么执行它。 Windows认为这是一个“功能”,计算机社区的其他成员将其视为“安全漏洞”。因此,类似Unix的环境不会搜索当前目录,除非它显式放在路径中。您可以通过提供明确的路径来运行PATH以外的内容。在Unix中,  .是当前目录,因此./a.out告诉系统执行当前目录中找到的程序a.out