Linux 在哪里保存可以从命令提示符调用的有效命令列表(在键入命令后使用 ENTER 键)?
此列表是否详尽,或者是否有方法可以在命令提示符下键入此列表中未包含的其他内容;如果是的话,它们是什么? (即:CTRL+C——退出命令提示符等)
如果您不知道这两个问题的答案,请随意回答:
在 Linux 上输入命令后在命令行中按 ENTER 键时,源代码从哪里开始?
如果在命令提示符下执行任何命令,那么 Linux 上的源代码从哪里开始?
基于安全性,我的问题可能是特定于用户的,因此为了简单起见,我们使用 root 用户来简洁。
答案1
无处。
Linux 是内核,而且只是内核。任何命令要么是 shell 内置命令(在每个 shell 的文档中列出),要么是通常位于和/bin
中/sbin
的/
可执行二进制文件/usr
。/usr/local
shell 本身也是位于这些目录中的二进制文件。
Linux 发行版中包含的二进制文件没有限制。某些二进制文件被视为标准工具(echo
、ls
等grep
),但不要求任何开发人员包含它们。
最后的问题毫无意义。源代码是您为创建可执行二进制文件而编写的代码。
答案2
Linux 在哪里保存可以从命令提示符调用的有效命令列表?
那没什么Linux保持,这是你的一个特点壳,无论是哪个!但是,基本上 Linux 上的所有 shell 都会在环境变量中的目录中查找PATH
可执行文件。它们还具有内置命令,并且在大多数命令中,您还可以定义函数和别名,这是 shell 初始化时执行的很多操作。
因此,根据 shell 及其设置方式,这将是多个列表,由目录列表中的条目组成,在命令中编程,并在初始化时加载扩展。
此列表是否详尽,或者是否有方法可以在命令提示符下键入此列表中未包含的其他内容;如果是的话,它们是什么?
你已经要求提供一份详尽的清单,现在你又问它是否详尽……这毫无意义。
在 Linux 上输入命令后在命令行中按 ENTER 键时,源代码从哪里开始?
再说一遍,这不是 Linux,而是您正在执行的 shell 程序。具体来说,按下 将对Enter输入处理库有意义,输入处理库会将其传递到输入标记化步骤,该步骤会将其传递到输入标记解释步骤,该步骤会将其传递到翻译/执行步骤。
最后,您的 shell 是形式语言的解释器,因此从技术上讲,它与任何其他编译器非常相似。