Linux Shell基本工作原理

深入理解Unix Shell及其工作原理 本文详细解读了Unix系统中登录Shell的工作机制、程序执行过程以及Shell的基本职责。从验证用户登录到登录shell的启动,再到用户通过命令行与系统交互,本文一一剖析了Shell在其中扮演的角色,并对文件名替换、环境变量、输入输出重定向等概念进行了深入探讨。 阅读详情

系统初启后,核心为每个终端用户建立一个进程去执行Shell解释程序。它的执行过程基本上按如下步骤: 

(1)读取用户由键盘输入的命令行。

(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的形式。

execve()函数将执行一个程序。execve()用来执行参数filename字符串所代表的文件路径,第二个参数系利用数组指针来传递给执行文件,最后一个参数则为传递给执行文件的新环境变量数组。

#include<unistd.h>

int execve (const char *filename, const char *argv [], const char *envp[]);

(3)终端进程调用fork( )建立一个当前进程的子进程。

#include<sys/types.h>   /*包含了pid_t的定义*/

#include<unistd.h>      /*包含系统调用fork的说明*/

unisigned int pid_t fork(void);

(4)终端进程本身用系统调用wait4( )来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve( ),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),将它调入内存,执行这个程序(解释这条命令)。

#include <sys/types.h>

#include <sys/time.h>

#include <sys/resource.h>

#include <sys/wait.h>

pid_t wait4(pid_t pid, int *status, int options,struct rusage *rusage);

(5)如果命令末尾有&号(后台命令符号),则终端进程不用系统调用wait4( )等待,立即发提示符,让用户输入下一个命令,转⑴。如果命令末尾没有&号,则终端进程要一直等待,当子进程(即运行命令的进程)完成处理后终止,向父进程(终端进程)报告,此时终端进程醒来,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重复上述处理过程。

 

 

 
Linux 下 Shell的工作原理 shell是用户和Linux操作系统之间的接口。 什么是shell   Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。   shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。   shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。 立即下载

相关推荐

期货分仓系统CTP协议/国内期货软件源码

期货分仓系统与CTP协议以及国内期货软件源码是期货交易技术领域的几个重要方面。

q2247238820的博客 962

shell脚本基础——Shell运行原理+变量、数组定义

程序在执行之前需要一个专门的编译过程,把程序编译成机器语言也就是二进制文件,运行时不需要重新翻译,直接使用编译的二进制文件运行就好了。程序执行效率较高,依赖编译器。比如Java语言,一次编译到处运行的说法,把编译出来的二进制字节码文件可以运行在不同平台的JVM上。当前用户自定义的变量,当前进程中有效,其它进程及当前进程的子进程无效。0000bash0000ps100#可以理解为7291的bash就是7272的子进程0000bash0000bash0000ps重复出现。......

爱敲代码的三毛的博客 1952

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 705

【linux系统编程】剖析shell运行原理

深入理解shell工作原理 目录:深入理解shell工作原理1. 简单介绍shell:2. shell工作原理:3. 简单shell实现: 1. 简单介绍shell: Windows以图形化界面为主要交互方式,简单高效,易于日常使用。Linux以命令行界面为主要交互方式,操作相较windows,mac来说比较困难一些,但linux也有向着图形化界面努力的桌面系统,例如ubuntu。Windows和Linux的交互方式虽然不同,但其本质上却是一样,图形化界面和命令行界面都是为了让用户进行相关操作,而图形化界面

NingHai's blog 4038

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

VS2019手动添加bits/stdc++.h全指南(附解决‘无法打开源文件‘错误)

本文详细介绍了在Visual Studio 2019中手动配置C++万能头文件bits/stdc++.h的完整方法,解决常见的'无法打开源文件'错误。通过分析GCC与MSVC编译器生态差异,提供了纯手动创建和MinGW移植两种可靠方案,并给出详细的步骤、常见错误排查及最佳实践建议,帮助开发者高效配置竞赛开发环境。

weixin_29011395的博客 549

强大好用的shell:shell的工作原理是什么

在整个过程中,Shell还会维护一些上下文信息,例如当前的工作目录、环境变量等,这些信息会影响命令的执行结果。Shell还提供了一些高级功能,如命令补全、历史命令查看、脚本编程等,这些都增强了Shell的易用性和功能性。需要注意的是,不同种类的Shell(如bash、zsh、fish等)在具体的工作原理和特性上可能会有一些差异,但上述描述是一般Shell的工作原理。2.命令解析:Shell接收用户的输入,并对命令进行解析。3.命令执行:解析完成后,Shell会执行相应的命令。

Q的博客 245

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6504

[Linux基础——Lesson11.Shell运行原理 (王婆传媒) ]

本文深入解析了Linux中Shell的运行原理与交互机制。Shell作为命令行解释器,是用户与内核间的中介,执行"双向翻译"功能:将用户命令解析传递给内核,并将执行结果反馈给用户。文章通过"王婆说媒"的生动类比,阐释了Shell的中介角色和保护内核的作用,以及通过创建子进程执行命令的机制。详细拆解了从用户输入命令到内核执行的完整流程:终端输入→Shell解析→查找可执行文件→系统调用→内核执行→结果反馈。同时区分了外部命令和内置命令的不同处理方式。理解这一流程对掌握L

2401_83386596的博客 1162

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 371

CTFShow萌新区全攻略:从密码破解到Web渗透的实战解析

本文为CTFShow萌新区新手提供从密码破解到Web渗透的完整实战攻略。文章深入解析了密码学、隐写术、杂项和Web安全四大核心方向,分享了实用的解题工具、思维方法和绕过技巧,旨在帮助初学者建立系统的安全竞赛解题体系,而不仅仅是提供一份题解(WP)。

weixin_29216957的博客 299

Linux编程Shell基本工作原理方案

<br /><br />Shell基本工作原理方案<br />Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不属 于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并执行用户打入的各种命令,实现用户与Linux核心的接口。系统初启后,核心为每个终 端用户建立一个进程去执行Shell解释程序。它的执行过程基本上按如下步骤: <br />(1)读取用户由键盘输入的命令行。 <br />(2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )

虚拟化开发 610

MFC C++ 中开发 PLC 通信客户端

OPC UA | 工业标准化通信 | `open62541`(开源OPC UA库)或 `UA-.NET` 封装 | 跨平台、安全可靠,支持复杂数据类型 |- 连接句柄(`modbus_t*`/`UA_Client*`/`TS7Client*`)不可跨线程共享,需为每个线程创建独立连接。Modbus 是工业常用协议,分 **RTU**(串口)和 **TCP**(以太网)两种模式,以下以 Modbus TCP 为例。s=Tag`),复杂类型需解析扩展对象。

寒寒豆豆软件公司的博客 139

Linux编程Shell基本工作原理方案(转)

Linux编程Shell基本工作原理方案(转)[@more@]  Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并执行用户打入的各种命...

178

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Shell 基础知识

Shell 是 Linux 系统中一个非常重要的工具,掌握 Shell 的工作原理和基本语法可以帮助用户更有效地使用 Linux 系统。

weixin_43825008的博客 798

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Shell 基本工作原理

 Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并执行用户打入的各种命令,实现用户与Linux核心的接口。系统初启后,核心为每个终端用户建立一个进程去执行Shell解释程序。它的执行过程基本上按如下步骤: (1)读取用户由键盘输入的命令行。 (2)分析命令,以命令名作为文件名,并将其它参数改造为系

xiaotian_ls的专栏 775

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Shell的基本应用--简介及启动

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把L

lollipop的专栏 1015

linux下shell脚本的工作原理分析

<br />Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 <br />  什么是shell <br />  Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程

博物明志,宁静致远 1126

【Linux shell 编程】sed - 流编辑器

sed(Stream Editor)是一种流编辑器,它能够对输入流(文件或管道)进行基本的文本转换。sed逐行处理输入,并将结果输出到标准输出。

sweetsounding的博客 373

linux下shell的工作原理

Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   什么是shell   L...

weixin_33786077的博客 87

linux下shell的工作原理。

Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   什么是shell   Linu...

weixin_33973600的博客 349

Linux下shell的工作原理

shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。   什么...

weixin_34417814的博客 92

Linux shell简介

Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。   概述:每个人在成功登陆Linux后,系统会出现不同的提示符。例如$,~,#等。然后可以开始输入需要的命令,如实命令正确,系统就会一句命令来执行,直到注销为止。在登陆到注销期间,输入的每个命令都会经常解译和执行。而这

zengchen73的专栏 609

[转]Linux下shell的工作原理

Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。 什么是shell Linux系统的shel...

weixin_33877092的博客 217
上一篇: 一个C程序的内存布局(memory layout)
下一篇: 书写Linux下自己的shellcode
mindview
博客等级 码龄19年 7粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值