我想了解bash终端如何准确地验证输入的命令,然后为我提供期望的输出。 例如:当我输入“ ls”时,它怎么知道这是一个有效命令,它如何给我文件列表? 我并不是要特别理解“ ls”命令,而是总的来说这些命令是如何工作的。
答案 0 :(得分:1)
它查找您的$ PATH环境。变量并递归地遍历PATH目录以查找与您的命令匹配的二进制文件。例如/ bin / ls
您可以通过输入'echo $ PATH'来检查PATH,或通过'export PATH = $ PATH:/ one / more / dir'进行更改
还有bash别名,您可以将其设置为将某些命令映射到另一个命令
答案 1 :(得分:0)
我将尝试以一种非常简单的方式进行解释。
它们都是二进制文件。它们作为常规流程运行。它们具有可选和/或必需的命令行参数。它们位于$ PATH环境变量中定义的位置之一中。通常会在/ usr / bin或/ usr / sbin中找到这些二进制文件。
在查看这些位置之前,操作系统首先将查找.bashrc文件中定义的bash别名。 Bash别名类似于C中的#defines。在此处了解有关它们的更多信息:https://mijingo.com/blog/creating-bash-aliases
但是,在执行此操作之前,它会寻找内置命令,即默认情况下随Shell提供的命令。这些是内置在Shell功能中的最常用命令,因此无需每次调用Shell便运行进程。
例如:“ cd”是内置的shell,而“ ls”不是
~ # type cd
cd is a shell builtin
~ # type ls
ls is /bin/ls