linux系统中命令一般分为内部命令和
-
外部命令两种类型。
内部命令是指直接嵌入在shell中的命令,由shell本身来执行,不需要调用外部程序。内部命令比如cd、echo、exit等,它们在执行过程中不需要创建新的进程,具有较高的执行效率。
外部命令是指独立的可执行文件,需要通过路径来调用,并且需要创建新的进程来执行。外部命令比如ls、grep、cat等,它们通常是由C/C++等语言编写的可执行文件,通过系统调用来与内核进行交互。
为了方便使用外部命令,Linux提供了一个环境变量PATH来存储可执行文件的路径。当我们输入一个命令时,系统会在PATH变量指定的路径中查找对应的可执行文件,并执行它。如果找不到对应的可执行文件,系统会提示“command not found”。
在使用命令时,我们可以通过which命令来查看一个命令是否是内部命令或外部命令。如果which命令返回结果为路径,则说明该命令是外部命令;如果which命令返回结果为内部命令,则说明该命令是内部命令。
总结一下,通过查看which命令的结果,我们可以判断一个命令是属于内部命令还是外部命令。对于内部命令,系统会直接执行,不需要创建新的进程;对于外部命令,系统会通过路径来调用对应的可执行文件,并创建新的进程来执行。使用内部命令可以提高执行效率,而使用外部命令可以获得更丰富的功能和灵活性。
2年前 -
外部命令两种。内部命令是由Shell提供的,其代码被编译进Shell程序中,可以直接在Shell中运行。而外部命令是由独立的可执行文件提供的,可以通过Shell调用执行。
1. 内部命令的执行速度更快。由于内部命令的代码被编译进Shell程序中,所以它们的执行速度会更快。而外部命令需要通过系统调用来执行,会有额外的开销。
2. 内部命令可以直接访问Shell的内部数据结构。由于内部命令是由Shell提供的,它们可以直接访问Shell维护的内部数据结构,如环境变量、别名等。而外部命令无法直接访问这些数据结构,需要通过Shell提供的接口来间接地访问。
3. 内部命令不需要独立的可执行文件。由于内部命令的代码被编译进Shell程序中,所以它们不需要独立的可执行文件。这使得内部命令的安装和更新更加方便,只需要更新Shell程序即可。
4. 外部命令通常具有更强的灵活性。外部命令通常是由独立的可执行文件提供的,这使得它们可以独立于Shell存在,可以在不同的Shell中使用。外部命令还可以通过环境变量来配置其行为,如PATH变量可以指定外部命令的搜索路径。
5. 内部命令和外部命令的功能可能存在差异。由于内部命令和外部命令是由不同的实现提供的,所以它们的功能可能存在差异。有些功能可能只有内部命令支持,有些功能可能只有外部命令支持。所以在使用命令时需要根据具体需求选择合适的命令。
2年前 -
外部命令。内部命令是由shell自带的命令,位于shell的内部,不需要通过外部程序来执行。而外部命令则是由独立的可执行文件组成的命令,需要通过系统的PATH环境变量来查找和执行。
内部命令
内部命令是指由shell自带的命令,位于shell的内部,不需要通过外部程序来执行。内部命令会直接调用shell的内部函数来执行,因此其执行速度较快。常见的内部命令有:
1. cd:用于切换当前工作目录。
2. echo:用于输出指定的字符串。
3. pwd:用于显示当前工作目录的路径。
4. history:用于显示历史命令。
5. alias:用于创建命令别名。外部命令
外部命令是由独立的可执行文件组成的命令,需要通过系统的PATH环境变量来查找和执行。外部命令可能已经安装在系统的某个路径下,也可能是用户自行安装的。常见的外部命令有:
1. ls:用于列出目录的内容。
2. cp:用于复制文件或目录。
3. mv:用于移动或重命名文件或目录。
4. rm:用于删除文件或目录。
5. grep:用于在文件中查找匹配的文本。外部命令执行流程
当在shell中执行一个外部命令时,系统会按照以下步骤进行处理:1. 系统会首先检查命令是否为内部命令,如果是内部命令,则直接由shell执行内部函数。
2. 如果命令不是内部命令,则系统会通过PATH环境变量查找命令的可执行文件。
3. 它会依次在PATH环境变量中的目录中查找命令的可执行文件,一旦找到就会执行。
4. 如果在所有的目录中都没有找到命令的可执行文件,则会提示“command not found”。总结
在Linux系统中,命令分为内部命令和外部命令。内部命令是由shell自带的命令,位于shell的内部,不需要通过外部程序来执行。外部命令是由独立的可执行文件组成的命令,需要通过系统的PATH环境变量来查找和执行。2年前