【问题标题】:What is ./ during executing on terminal [closed]什么是./在终端上执行期间[关闭]
【发布时间】:2015-01-16 08:38:55
【问题描述】:

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

【问题讨论】:

标签: linux shell unix posix


【解决方案1】:

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

在当前目录中查找我的脚本,而不是全部查看 $PATH中指定的目录

【讨论】:

    【解决方案2】:

    . 是当前目录(如.. 是当前目录的父目录)所以./a.out 表示“从当前目录运行a.out 程序”。

    它适用于路径中没有. 的人。如果您共享您的盒子或过于偏执,这是一个好主意,但对于家庭盒子,将. 添加到路径末尾可能更容易,因此您不必使用长版。

    【讨论】:

    • 在您的PATH 中添加. 存在其他问题;如果我键入foo,如果碰巧存在名为foo 的文件或目录(即“权限被拒绝”,而不是“找不到命令”),我可能会收到“奇怪”错误...
    • @Carpetsmoker,我不能说这种情况发生在我身上,也许我只是比普通熊更聪明:-)
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      当您在 Linux shell 中键入命令时,为了决定要执行的操作,shell 首先查看其中是否有 /。如果没有,它会寻找:

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

      如果名称中有/,那么它总是会查找具有该名称的文件。

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

      所以./ 做了几件事:

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

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 2021-11-18
        • 2020-10-23
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        相关资源
        最近更新 更多