为什么在 Linux 中运行由 GCC 编译的应用程序时要输入“./”?

为什么在 Linux 中运行由 GCC 编译的应用程序时要输入“./”?

我的操作系统是 Fedora Linux 14。

我使用 Code::Blocks IDE 编写了一个程序,它使用 GCC 编译了我的程序。

我的输出程序是test。当我在 Code::Blocks 中启动我的应用程序时,它正常启动。但是当我双击我的可执行程序时,程序没有启动。当我启动终端(在我的二进制程序的路径中)并输入 时test,我的程序没有启动,但是当我./test在终端中输入 时,它正常启动。为什么./当我想运行应用程序时要输入?

答案1

./当你的PATH环境变量不包括当前目录时,这是必需的。因此,如果你的某个目录中有一个不在你的路径上的可执行文件,你需要./theexecutable告诉 shell 你的可执行文件在当前目录中。

答案2

仅仅因为当前目录.通常不包含在 PATH 变量中。

如果您不知道要输入什么./,您可以将其添加.到 PATH 中包含的冒号分隔的文件夹列表中,但是不建议这样做,因为这很容易在不知不觉中屏蔽系统命令。

答案3

当您只输入程序名称时,*nix 会在所有 PATH 位置中查找该名称。如果找不到,则不会启动。因此,您必须输入“./”来指示当前目录。

答案4

除了其他答案告诉您的内容之外:

当您输入时test,您可能会调用/bin/test;man test来获取详细信息。

当您双击可执行文件(来自 nautilus 或类似程序,是吗?)时,它可能会运行,但如果没有终端,您就看不到输出。

相关内容