什么是 ./ 在终端上执行期间

What is ./ during executing on terminal

成功构建.cpp扩展文件后,需要使用./a.out命令执行a.out文件。 ./ 代表什么?它只是一种在终端上执行它的方法吗?对它代表什么有进一步的解释吗?

. 是当前目录(就像 .. 是当前目录的父目录)所以 ./a.out 表示 "run the a.out program from the current directory".

这是为那些没有 . 的人准备的。如果你分享你的盒子或者过于偏执,这是个好主意,但是对于家庭盒子,可能更容易 add . 到路径的末尾,这样你就不会不必使用长版。

这与c++无关。它适用于类似 unix 的操作系统。 ./ 表示

look in the current directory for my script rather than looking at all the directories specified in $PATH

如果您执行 ls -al,它会列出当前目录的文件和文件夹,您会注意到它显示 . 作为条目。

这对应于对当前目录的引用。

当我们说 ./a.out

时,我们告诉 shell 执行相对于当前目录的 a.out 文件

当您在 Linux shell 中键入命令来决定要做什么时,shell 首先查看其中是否有 /。如果没有,它会寻找:

  1. 内部 shell 命令。
  2. $PATH 环境变量中列出的某些目录中的可执行文件。

如果名称中有 /,则它会始终查找具有该名称的文件。

您可能知道,. 是当前目录。

所以 ./ 做了几件事:

  1. 它阻止 shell 将命令解释为 shell 内置命令。
  2. 它阻止shell在$PATH中寻找程序。
  3. 它使 shell 只在当前目录中查找程序。