为什么在 Linux 中执行可执行文件之前总是要输入“./”?

为什么在 Linux 中执行可执行文件之前总是要输入“./”?

当我通过以下方式编译 egxc 时:

GCC x.c -o x

为了执行结果我必须写:

./x

只需输入:

x

失败并显示以下消息:

x:未找到命令

这意味着 Linux 不会在当前目录中搜索它!这种行为背后是否存在(我确信存在)任何合理的问题?

答案1

因为默认情况下,当前工作目录不在PATH变量中。

这是一项安全/便利措施。如果您当前工作目录中有名为cdls等的二进制文件/脚本,则默认运行它们会非常烦人。

答案2

这意味着当前目录不在 $PATH 变量中。

答案3

您可以通过将当前目录(用一个点表示)添加到PATH环境变量来修复此问题。
具体方法取决于您使用的 shell。
如果您使用的是 bash,则可以将该行添加 export PATH=$PATH:..bashrc主目录中的文件中。
如果您使用的是 csh 或 tcsh,则可以将该行添加 set PATH = ($PATH .)到主目录中的 .cshrc 文件中。
恕我直言,对于家用台式电脑来说,从安全角度来看,这是可以接受的做法。

相关内容