shell中./是什么意思?

shell中./是什么意思?

我有一个简单的hello_world.c文件这里。我想出了如何去做。

gcc -Wall -g hello_world.c -o hello 正在工作,但是如果我运行bash hello就会出现错误:hello: hello: cannot execute binary file

sh hello然后错误:hello: 1: Syntax error: "(" unexpected
./hello打印出预期的行。

我以为这三个都是一样的。从结果看不是。为什么另外两个不工作?除此之外./hello,还有其他方法来调用该文件吗hello

答案1

前两次尝试bash hellosh hello,您试图说服这些 shell(分别是bashsh)该hello文件是 shell 可执行文件。由于它是二进制文件,因此 shell 不知道如何处理被告知运行它的信息,因此它们会向您提供这些错误消息。第三个示例,您将hello二进制文件作为二进制文件运行,就像 shell 期望的那样运行。它./只是一个指示符,指示可以在当前目录 ( .) 中找到二进制文件的位置。为什么需要./?大多数时候,“当前工作目录”不是变量的一部分$PATH,因此简单地运行hello不会在任何地方找到可执行文件。

答案2

为什么我们使用 ./(点斜线)来运行 Linux 脚本?

Unix ./脚本语法可以分三部分解释:

Linux 中应用程序 PATH 的作用 ./ 表示法表示当前目录 需要避免与现有命令冲突

Unix 的点斜杠与 PATH 每台计算机都有一个应用程序路径。这是调用可执行命令或可运行脚本时操作系统查找的目录集合。

您熟悉的所有内置命令(例如 ls、cat、echo、touch 和 chmod)都位于应用程序 PATH 中。用户通常也将JDK或Git中常用的程序也放在应用程序PATH中。

问题是,如果您尝试调用自己编写的脚本,它可能不会保存在属于应用程序路径的文件夹中。这意味着如果您像运行 PATH 上的命令一样运行自定义脚本,Linux 操作系统将找不到它。

Linux 中 ./ 的含义 这就是点斜杠 ./ 符号出现的地方。它的意思是“在当前目录中查找”。当您使用 ./ 时,您告诉 Ubuntu、Fedora、SUSE 或您使用的任何 Linux 发行版在当前目录中查找您希望运行的命令,并完全忽略应用程序 PAT 上的内容

相关内容