首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Linux中,shells是如何在幕后工作的?

在Linux中,shells是指用来与操作系统内核进行交互的命令解释器。它们接收用户输入的命令并将其解析为系统可以理解的形式,然后调用相应的系统程序执行该命令。下面是shells在Linux中的工作原理:

  1. 用户登录系统后,shell会读取用户的配置文件(例如.bashrc或.profile)以加载用户自定义的环境变量、别名和函数等。
  2. shell提供一个命令行界面(CLI),等待用户输入命令。
  3. 当用户输入命令后,shell会解析该命令,并将其分成命令名和参数等部分。
  4. 接下来,shell会根据命令的类型来决定如何处理它:
    • 内建命令:shell会直接执行内建命令,如cd(切换目录)、echo(输出文本)、export(设置环境变量)等。
    • 外部命令:shell会查找命令所对应的可执行文件,并使用exec系列函数调用该可执行文件来执行命令。
  • 执行命令时,shell会创建一个子进程来运行命令,并等待该进程的结束。在子进程中,shell会使用exec函数族将命令对应的可执行文件加载到内存中,并传递参数给可执行文件。
  • 当命令执行完成后,shell会将执行结果输出到标准输出(stdout)上,并等待用户下一条命令的输入。

总结起来,shells在Linux中作为命令解释器,负责接收、解析和执行用户输入的命令,并通过调用相应的系统程序来实现命令的功能。不同的shell具有不同的特性和语法,如Bash、Zsh、Ksh等。在Linux中,Bash是最常用的默认shell。

关于Linux shells的更多信息,您可以参考腾讯云官方文档中关于Bash Shell介绍的内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

hypernetworkSD怎么工作

大家stable diffusion webUI可能看到过hypernetwork这个词,那么hypernetwork到底做什么用呢?...简单点说,hypernetwork模型用于修改样式小型神经网络。 什么 Stable Diffusion hypernetwork?...训练过程,Stable Diffusion 模型本身保持固定,但允许附加hypernetwork进行调整。...与此相对,超网络通过生成另一个网络权重来定义训练过程,为训练网络提供动态权重,从而允许训练过程中进行更灵活学习和调整。 embedding 嵌入向量“文本反转”微调技术结果。...文本反转在文本编码器层面上生成新嵌入,而超网络则通过噪声预测器交叉注意力模块插入一个小网络来实现其功能。 在哪下载hypernetwork 当然下载模型最好地方 civitai.com。

17410
  • 函数表达式JavaScript如何工作

    JavaScript,函数表达式一种将函数赋值给变量方法。函数表达式可以出现在代码任何位置,而不仅仅是函数声明可以出现位置。...函数表达式语法如下: var myFunction = function() { // 函数体 }; 上述代码,将一个匿名函数赋值给变量myFunction。...函数表达式工作方式如下: 1:变量声明:使用var、let或const关键字声明一个变量,例如myFunction。 2:函数赋值:将一个函数赋值给该变量。函数可以是匿名函数,也可以是具名函数。...这样函数函数内部和外部都可以通过函数名来调用自身。...函数声明会被提升到作用域顶部,而函数表达式不会被提升。因此,使用函数表达式之前,需要确保该表达式已经被赋值。此外,函数表达式还可以根据需要在运行时动态创建函数,具有更大灵活性。

    21250

    EDI(电子数据交换)供应链如何工作

    EDI(电子数据交换)如何工作,这大概企业主、公司经理、企业EDI系统管理人员常问一个问题。尽管现在EDI已经一项相当广泛技术,但仍有一些问题需要讨论。...那些没有连接到EDI的人通常并不理解EDI(电子数据交换)和互联网通信技术之间区别。那么EDI(电子数据交换)供应链如何工作呢?继续阅读下文,您将会找到一个答案。...如果您有接触或是了解过采购业务传统文件流通方式,您可能会注意到,纸张操作和邮寄需要花费大量时间。...与此同时,将订单、商品等信息手动录入到交易伙伴业务平台中花费了大量时间和精力,占用了大量的人力资源。...商品到达之前,收货方已经收到供应商发送发货通知,进而完全掌握了关于此次运输货物所有信息并及时做出收货准备。

    3.2K00

    Linux】解析【进程PCB】如何实现【信号处理方式(抵达未决阻塞)】

    注意: 被阻塞 信号产生时将 保持未决状态 ,直到进程解除对此信号阻塞,才执行递达动作....注意,阻塞和忽略不同,只要信号被阻塞就不会递达,而忽略递达之后可选一种处理动作 二.信号处理动作在内核表示 1.示意图&作用机制介绍&信号集sigeset_t介绍...(pending),还有一个函数指针表示处理动作 信号集(sigeset_t): 这个类型可以表示每个信号“有效”或“无效”状态; 非0即1 阻塞信号集中“有效”和“无效”含义该信号是否被阻塞...PCB 都有如下图所示三张表,分别叫做 阻塞信号集,未决信号集,处理动作集 ,对应各个信号(1-64) 其中handler表存储函数指针,指向对应处理动作 原理:我们只要改变我们要改变信号...(例如信号2)handler表指针,由SIG_IGN指向函数,改成我们自定义函数即可 其中,就需要用到我们接下来要用到 signal函数(设置信号处理程序) 【2】信号捕捉函数signal

    12610

    Shell编程从看懂到看开①(Shell概述、变量、运算符、条件判断)

    @TOCShell概述Shell 一个用 C 语言编写程序,它是用户使用 Linux 桥梁。==Shell 既是一种命令语言(可以理解为命令行解释器),又是一种程序设计语言。...日常工作中被广泛使用。...用于对脚本进行解释和说明,注释行前要加上“#”② 命令。Shell脚本可以出现任何在交互方式下使用命令。③ Shell变量。Shell支持具有字符串值变量。④ 流程控制。...图片开子 shell 与不开子 shell 区别就在于,环境变量继承关系,如在子 shell 设置的当前变量,父 shell 不可见bash shell操作环境路径与命令搜索顺序:bash...反引号功能命令替换,反引号() 内容通常是命令行,程序会优先执行反引号内容,并使用运行结果替换掉反引号处内容。

    80320

    Linux世界追寻伟大One Piece】Linux从哪里来?又是怎么发展?基本指令你知道哪些?

    1.3 -> 官网 kernel官网 1.4 -> 企业应用现状 Linux服务器领域发展 随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统整个服务器操作系统市场格局占据了越来越多市场份额...国内中标麒麟Linux、红旗 Linux、深度Linux等系统软件厂商都推出Linux桌面操作系统,目前已经政府、企业、OEM等领域得到了广泛应用。...Fedora一款非常好发行版,有庞大用户论坛,软件库还有为数不少软件包。 Kali Linux Kali LinuxDebian一款衍生版。Kali旨在用于渗透测试。...2.3 -> cd指令 Linux系统,磁盘上文件和目录被组成一棵目录树,每个节点都是目录或文件。 语法: cd 目录名 功能: 改变工作目录。将当前工作目录改变到指定目录下。...解释一下,面手册分为8章 1 普通命令 2 系统调用,open,write之类(通过这个,至少可以很方便查到调用这个函数,需要加什么头文件) 3 库函数,printf

    9010

    Linux 备份及恢复 Linux 文件权限

    日常管理,我们有许多工具可以用来备份文件权限,cp、rsync、etckeeper等。如果你使用了这个备份工具,那么你的确不需要担心改变文件权限问题。...在这些情况下,我们可以原始文件权限改变之前对其进行备份,一会我们需要它时候再将原始权限还原。很多情况下,如果你只是想要备份文件权限,那么完整文件备份不必要。...Linux上,实际上备份和恢复文件权限使用访问控制列表(ACL)容易。ACL根据不同属主和属组兼容posix文件系统上定义了单个文件权限。 ?...---- 安装ACL工具 Debian, Ubuntu,Linux Mint上 $ sudo apt-get install acl CentOS,Fedora,RHEL上 $ sudo yum install...以下生成permissions.txt文件中部分目录信息 [xgj@entel2 shells]$ cat permissions.txt # file: . # owner: xgj # group

    8.1K10

    DQpQZW5lbG9wZSAtIFNoZWxsIEhhbmRsZXI

    aHR0cHM6Ly9naXRodWIuY29tL2JyaWdodGlvL3BlbmVsb3Bl 这是一个没有第三方依赖脚本,它主要目的利用 RCE 漏洞期间取代 netcat 作为 shell...它适用于 Linux 和 macOS,唯一要求是 Python3。.../etc 目录 终止会话并使用 Ctrl-D 退出 添加额外侦听器并显示所有侦听器 与会话 1 交互 产生 2 个额外备份会话 显示所有会话 还包括两个示例漏洞利用模拟脚本,以演示如何在同一终端上导入...转发端口 编辑命令:本地打开远程文件,进行更改并保存后,将其上传到目标 能够指定在目标和/或主菜单上自动运行命令列表 用于禁用所有日志记录选项开关,而不仅仅是会话。...目标上执行本地脚本并在本地文件上获取输出 短命令主菜单自动完成 下载/上传进度条 下载/上传自动完成 IPv6 加密 UDP positional arguments: PORT

    1.3K10

    第二章 : 什么 shell

    虽然菜单里它可能都被简单地称为 “terminal”,但是 KDE 用 konsole , 而 GNOME 则使用 gnome-terminal。...然而,它可能会以各种各样面孔显示,这则取决于不同 Linux 发行版,它通常包括你用户名@主机名,紧接着当前工作目录(稍后会有更多介绍)和一个美元符号。...虽然,shell 和键盘打交道,但你也可以终端仿真器里使用鼠标。X 窗口系统(使 GUI 工作底层引擎)内建了一种机制,支持快速拷贝和粘贴技巧。...它们叫做虚拟终端或者虚拟控制台。大多数 Linux 发行版,这些终端会话都可以通过按下Ctrl-Alt-F1 到 Ctrl-Alt-F6 访问。...in computing: 这是一篇关于计算机领域里,shells 概念文章: http://en.wikipedia.org/wiki/Shell_(computing)

    24000

    linux20-各种shell区别

    - Super User[1] Unix / Linux - What is Shells?[2] shell有哪些?Zsh和Bash区别是什么?...- 简书[3] 前言 一直以来,我都有一个概念上疑惑,当我们在说terminal, console,再或者bash, zsh,甚至linux 时候,我们到底在说什么。...ps:最近我也折腾zsh,确实是好玩,而且有很多颜值很高主题。 terminal mac ,有个软件就叫做terminal,翻译为终端。它就是用来运行shell 软件。...查看使用shell 通过 cat 命令来查看当前 Linux 或mac系统可用 Shell: ❯ cat /etc/shells # List of acceptable shells for chpass...: chsh --list-shells 当我们切换了shell 时,比如bash 到zsh,可以直接在.zshrc文件中加上source ~/.bash_profile,从而更快完成conda

    1.3K20

    Linux】《how linux work》第十三章 用户环境

    相比之下,许多管理员和发行版会将所有内容都放入默认提示符。 您选择应该反映出用户需求;只有确实有帮助时,才将当前工作目录、主机名和用户名放入提示符。...However, aliases also have these drawbacks: 现代用户环境,一个较为棘手问题别名角色,别名一种执行命令之前用一个字符串替换另一个字符串 shell...窗口系统终端程序(xterm、GNOME Terminal等)没有明确要求登录shell情况下启动非登录shell。...o bashLinux系统上标准。o bash使用GNU readline,因此其界面与许多其他工具界面完全相同。o bash提供了对I/O重定向和文件句柄精细且易于理解控制。...窗口环境选择可能令人困惑,并且Linux没有一种通用启动窗口环境方法。 下一章将介绍一些许多可能性。 然而,当你确定了你系统所做事情时,你可能会对与你图形环境相关文件感到有些着迷。

    17310

    OSCP 考试操作笔记及参考资料

    OSCP 认证,一个专门针对 Kali Linux 渗透测试培训课程专业认证。该认证机构声称,OSCP 认证一个区别于所有其它认证考试,考试全程采取手动操作方式,而不设笔试环节。...题目 5 台主机(随机抽取),目标攻入并拿到最高权限(ROOT/SYSTEM)。基于难度级别,成功执行攻击会获得相应积分。...以下我用于测试目标实验机器具体步骤,考试期间这些都可以放入自动化代码。...SMB、DCERPC、NETBIOS 7、针对 SMTP 端口尝试 枚举用户,使用 VRFY 和 EXPN 命令 8、针对 SNMP 端口测试 默认共享名称:public, private, cisco...http://www.lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/ Web Shells http://repository.root-me.org

    1.4K60

    Shell 脚本中跟踪调试命令执行

    文章目录 shell 脚本调试系列 概述 shell 跟踪执行重要性 shell 脚本调试系列 本系列前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解例子展示了如何在这些模式下启用...Linux 启用 Shell 脚本调试模式 Shell 脚本执行语法检查调试模式 Shell 脚本中跟踪调试命令执行 ---- 概述 shell 跟踪简单来说就是跟踪 shell 脚本命令执行...Number of users: $NO_USERS" echo "System Uptime : $UPTIME" } check_root print_sys_info exit 0 注: Linux...---- shell 跟踪执行重要性 hell 脚本跟踪可以帮助我们识别语法错误,更重要识别逻辑错误。...例如, sys_info.sh shell 脚本 check_root 函数,它用于确定用户是否为 root,因为脚本只允许由超级用户执行。

    91020

    树莓派折腾记:安装并配置zsh

    文章更新   20170328 初次成文   20170417 更正了有关Autojump内容 问题提出:   今天小苏要为大家介绍何在树莓派上安装和配置zsh,zsh和系统默认bash一样...,都是Linux系统一种Shell。...写这篇文章之前,小苏拿"树莓派 zsh"做关键词Google上搜索了一下,搜索结果似乎没有文章能比较系统地介绍如何在树莓派上安装和配置树莓派,所以干脆自己写一篇喽~   正文开始(以下内容默认针对于树莓派默认用户...pi): 安装zsh   首先我们执行以下命令查看一下系统对各Shell支持情况: cat /etc/shells   终端返回结果,可能会看到/bin/zsh或/usr/bin/zsh字样,...  高效Linux之autojump安装、配置与使用: http://www.linuxdiyf.com/linux/13711.html

    2.8K20

    利用lynis如何进行linux漏洞扫描详解

    前言 lynis 一款运行在 Unix/Linux 平台上基于主机、开源安全审计软件。Lynis针对Unix/Linux安全检查工具,可以发现潜在安全威胁。...下面一起来看看使用lynis进行linux漏洞扫描相关内容吧 安装lynis archlinux 上可以直接通过 pacman 来安装 sudo pacman -S lynis --noconfirm...同时将报告数据被保存到 /var/log/lynis-report.dat . sudo tail /var/log/lynis-report.dat 另外需要注意,每次审计都会覆盖原日志文件....关于配置文件各配置项意义, default.prf 中都有相应注释说明,这里就不详述了。 想了解lynis更多信息,可以访问它官网....总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

    1.9K31

    ASP.NET 5应用程序跨域请求功能详解什么“同域”添加CORS包在应用程序配置CORSCORS策略选项跨域请求凭据设置先行请求过期时间CORS怎么样工作先行请求

    凭据需要在CORS做特殊处理,默认情况下,浏览器跨域请求不发送任何凭据。...允许凭证时候要相当注意,它意味着一个它域网站在用户不知情情况下将可以发送一个登陆成功用户凭据给你应用程序。CORS还规定如果允许凭证存在,那么将域设置为“*”无效。...builder.WithOrigins("http://example.com") .SetPreflightMaxAge(TimeSpan.FromSeconds(2520)); }); CORS怎么样工作...这对理解CORS如何工作非常重要,进而让你可以正确配置自己CORS策略,分析你应用程序为什么不像预期那样工作。 CORS规定提出了几个新HTTP头来打开跨域请求。...先行请求 一些CORS请求,浏览器发送真实请求资源请求之前,发送一个附加请求叫做“preflight request”(本文中先行请求),以下条件都满足情况下,浏览器可以忽略这个先行请求

    2.5K50

    Python 换行符以及如何在 Python 输出时不换行

    本文中,你将学习: 如何在 Python 识别换行符 如何在字符串和打印语句中使用换行符 如何编写不会在字符串末尾添加换行符打印语句 我们开始吧!...✨ 换行符 Python 换行符: 它包含两个字符: 一条反斜线 字母 n 如果你字符串中看到此字符,则表示当前行在该点结束,并在其后立即开始新行: 你也可以格式化字符串(f-strings...打印语句中换行符 默认情况下,print 语句字符串末尾“幕后”添加新换行符。...类似的,我们可以使用它在同一行打印可迭代值: 输出结果: 文件换行符 文件也可以找到换行符 \n,但是它是“隐藏”。当你文本文件中看到新行时,其实已经插入新行字符 \n。...如你所见,文本文件前三行以换行 \n 字符结尾,该字符幕后工作

    13.9K10

    编程小短文:Bash子字符串还在用==?试试=~,性能瞬间飙升100倍!

    引言 Bash Linux 系统下钦定 shell。你可以通过 cat /etc/shells 查看当前系统支持 shell 种类。...Bash 不但是系统管理员与内核交互利器,且一种语言,可以编写大多数系统自动化脚本,用于简化运维工作。 今天我们学习一个知识点:如何在 Bash 判断某个字符串,是否包含子字符串? ?... Bash 看来,万物都是字符串。这与 Unix “一切皆文件”哲学不谋而合。 处理字符串,我们必然绕不开“正则表达式”。 上述问题,有没有可能使用强大正则方式处理呢?答案肯定。...正如上面所述,Bash 如果使数字比较,也完全可以使用字符串正则方式处理。 比如要判断某个整数值,是否某个有效列表内。可以这样写。...写在最后 命令行敲一下测试测试吧。只有多实践才能加深印象。 另外,正则表达式真的强! Happy coding :_)

    56410

    Shell编程

    Linux Shell 解释器 种类众多,一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统安装 shell解释器。...Bash 由于易用和免费,日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认 Shell。...shell变量 1 简介 shell脚本, 定义变量时,变量名不加美元符号($),: your_name=“runoob.com” 注意 : 变量名和等号之间不能有空格,这可能和你熟悉所有编程语言都不一样...,单引号字符串变量无效; 单引号字串不能出现单独一个单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。....sh,test1定义一个变量arr=(java c++ shell),test2对arr进行循环打印输出。

    5K11
    领券