Linux shell 内建命令

芝士年糕
• 阅读 454

前言 一、shell简介 shell 是Linux系统中一个提供命名行的交互式工具,本质是一个c语言可执行程序,为用户提供了启动程序,管理文件系统中的文件以及运行在Linux系统上的进程的途径。命令行提示符是shell负责交互的部分,允许用户输入文本命令,然后解释命令,并在内核中执行。 Linux系统上有多种shell可用,Linux发行版默认的shell都是bash shell,接下来主要介绍bash shell。 系统中启动哪种类型的shell,取决用个人用户ID配置,在/etc/passwd文件中可见。只要用户登录到某个虚拟控制终端或是在GUI中启动终端仿真器,默认的shell程序就会开始运行。 我在我的Ubuntu20.04上打开终端,这时候默认的shell程序就开始运行了,同时第一次登录是父shell,提供CLI提示符,等待命令输入。 Linux shell 内建命令

用户 yl 用 bash shell作为自己的默认程序,bash shell位于/bin目录下,/bin/bash是一个可执行的二进制程序, Linux shell 内建命令 x代表可执行,ls 加-F选项,会在可执行文件中的后面加一个 * 号,以便用户找出系统上可执行的文件。 -F选项也可以区分文件夹和文件。

Linux shell 内建命令

二、外部命令 外部命令也被称为文件系统命令,是存在与 bash shell之外的程序,之前说过bash shell本质是也是一个二进制可执行程序。通常位于 /bin、/usr/bin、/sbin或/usr/sbin下。

Linux shell 内建命令 当执行外部程序时,父进程bash shell会执行 fork() 创建一个子程序,子程序调用exec() 执行当前的外部程序,执行完之后结束自己的生命,等待bash shell 父进程调用 wait() 进行回收子程序的资源。

创建一个进程会有一定的开销,会打开文件,进行磁盘文件IO操作。 外部命令比如,可以使用 type 来确定一个命令是否是外部程序。

Linux shell 内建命令

$PATH 变量包含的目录中系统中绝大多数的可执行命令,它们都是外部命令:

Linux shell 内建命令

三、内建命令 内建命令并不需要父进程bash shell创建一个子程序,内建命令是bash shell程序的一部分,执行内建命令等于调用bash shell程序的一个程序。可以使用 type 来确定一个命令是否是内建命令。

Linux shell 内建命令 内建命令属于shell执行的一部分,因此执行内建命令不需要创建子进程,也不需要打开程序文件,这样不用操作文件IO,执行效率高,运行快。 还有一些命令即属于外部命令也属于内建命令,用 type -a 进行查看,比如: Linux shell 内建命令

其中which命令只显示出外部命令文件。 对于即属于外部命令也属于内建命令的,要想执行外部命令,输入指定文件:

Linux shell 内建命令 总结 内建命令比外部命令,效率更高,执行更快,执行内建命令相当于调用当前 Shell 进程的一个函数。比如cd、exit 这些是内部命令,本质是函数调用,可以直接使用,内建命令并不是某个外部程序,而是bash shell该程序的组成部分,只要在 bash shell 中就可以运行这个命令。 内建命令不会受到系统环境变化的影响。 执行外部命令时,会打开文件,不但会产生磁盘 I/O,还需要调用 fork 创建一个进程来执行,执行完成后再退出。 如果想玩这种系统的话,建议去租一个服务器,可以后台私信我

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Linux只读账号配置【转】
整个配置的命令如下(主要使用了:Linux bash受限的shell(RESTRICTED SHELL))步骤1.创建只读shell(这步可以省略)lns/bin/bash/bin/rbash2.创建用户并指定用户启动执行的shelluseradds/bin/bashreadonly这步不要指
Stella981 Stella981
2年前
Python之OS模块函数
Python中的os模块提供了操作系统相关功能的函数,可以更加方便的在python脚本中对linux的文件目录的处理和shell的应用。os.system("bash")运行shell命令,直接显示应用ls命令查看当前目录下的文件importosprint(os.system('ls'))
Stella981 Stella981
2年前
Linux基础(1)之shell
  shell作为下Linux系统中用户与内核交互的接口,用于将用户输入的命令转化为内核可以理解的指令,进而通过内核操作硬件资源,完成相应的功能。shell分为两种,图形shell和命令行shell。图形shell主要有KDE,Gnome等,命令行shell有常见的sh,zsh,csh,bash,ksh,tcsh等。  这里主介绍最常用的bash
Stella981 Stella981
2年前
Shell脚本入门
1.Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。KenThompson的sh是第一种UnixShell,WindowsExplore
Wesley13 Wesley13
2年前
1.学习shell脚本之前的基础知识
【什么是shell】简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即BourneAgainShell,它是sh(BourneShell)的增
可莉 可莉
2年前
20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量
第二十章shell编程20.1shell介绍shell是一种脚本语言可以使用逻辑判断、循环等语法可自定义函数shell是系统命令的集合shell脚本可以实现自动化运维,能大大增加我们的运维效率20.2shell脚本结构和执行
Stella981 Stella981
2年前
Linux云计算学习笔记day56
shell编程第一章1.1什么是shell?Shell其实是一个命令解释器,作用是解释执行用户输入的命令以及程序等,用户每输入一条命令,Shell给予解释执行一条。这种键盘一输入命令,就可以立即得到回应的对话方式,称为交互模式。Shell存在于操作系统的最外层,负责与用户直接对话。处理用户的输入,并将操作系
Stella981 Stella981
2年前
Shell脚本编程——基础篇
Shell脚本概念1、将要执行的命令按顺序保存到一个文本文件2、给该文件可执行权限,便可运行3、可结合各种shell控制语句以完成更复杂的操作Shell脚本应用场景1、重复性操作2、批量事务处理3、自动化运维4、服务运行状态监控5、定时任务执行完善的shell脚本
Wesley13 Wesley13
2年前
Java 程序员必须掌握的 Linux 命令
  作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。  本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用–help查看帮助或者直接通过goog
Stella981 Stella981
2年前
Linux用户管理
Linux用户管理用户管理配置文件 用户信息文件:/etc/passwd                                 用户名,密码位,UID(用户标识号),GID(缺省组织标识号),注释性描述(例如存放用户全名等信息),宿主目录(用户登陆系统后的缺省目录),命令解释器(用户使用的Shell,默认为bash