我正在从OS X终端编译c ++程序:
> g++ a.cpp
然后我从终端运行程序:
> ./a.out
./
语法是什么意思?这在某种程度上与./run
有关吗?
答案 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
。