Shell——执行方式详解

一.什么是shell

Shell 是一个计算机程序,它提供了用户与操作系统内核之间的交互界面。它接受来自用户或其他程序的命令,并将其转换为操作系统能理解的形式,然后执行这些命令并将结果返回给用户或程序。

Shell 在操作系统中扮演着重要的角色,它允许用户执行各种操作,例如启动程序、管理文件和目录、设置环境变量、编写和执行脚本等。通过 Shell,用户可以直接与操作系统进行交互,而无需了解底层的系统细节。

Shell 可以是交互式的,用户可以逐行输入命令并立即看到结果;也可以是批处理的,用户可以编写包含一系列命令的脚本文件,并一次性执行这些命令。

  • SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。

  • 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、

  • Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。

  • 建立文件并以并行的方式协调各个程序的运行。

二.shell特点

  1. 交互性: Shell 提供了与操作系统交互的界面,允许用户输入命令并即时看到结果。这种交互性使得用户可以直接控制计算机,执行各种任务。

  2. 脚本编程: 除了交互式使用外,Shell 还支持编写脚本文件,其中包含一系列的命令和控制结构,用于自动化和批处理任务。这使得 Shell 成为了自动化任务和批处理处理的强大工具。

  3. 灵活性: Shell 提供了许多内置命令和工具,同时也支持调用外部程序和脚本。这种灵活性使得用户可以根据自己的需要组合各种命令和工具,完成复杂的任务。

  4. 可定制性: 用户可以根据自己的喜好和需求定制 Shell 的配置和行为,例如修改提示符、设置别名、定义函数等。某些 Shell 还提供了丰富的插件和扩展机制,使得用户可以扩展其功能。

  5. 管道和重定向: Shell 支持管道和重定向操作,允许用户将命令的输入和输出进行流式处理和重定向到文件或其他命令。这种特性使得 Shell 在处理文本数据和协作多个命令时非常强大。

  6. 环境变量和配置: Shell 允许用户设置和管理环境变量,用于控制程序的行为和配置系统。通过环境变量,用户可以影响程序的执行环境、搜索路径、语言设置等。

  7. 多样性: 有多种不同的 Shell 可供选择,每种 Shell 都有自己的特点和优势。用户可以根据自己的喜好和需求选择适合的 Shell。

三.shell的多种执行方式

  • 执行1:bash file
  • 执行2:sh file
  • 执行3:./file
  • 执行4:. file
  • 执行5: source file

执行which bash 和which sh 发现是同一个文件,执行方法三和执行方法四也是相同。

1和和2和3的方式,是子shell。这两种方式执行脚本时,会启动一个新的Shell,在新的Shell环境中读取并执行脚本中的命令。执行完脚本后,新的Shell环境也会随之消失。需要注意的是,如果脚本中改变了环境变量,如PATH,新的Shell环境会被改变,但原Shell环境不受影响。

如下图PID(进程ID)

 

3和4的方式,是本shell。这两种方式执行脚本时,不会启动新的Shell,而是在当前Shell环境下读取并执行脚本中的命令。也就是说,脚本中所有对环境的改变在脚本执行完毕后仍然有效。

如下图PID(进程ID)

​​​​​​​

总结描述:上述实验我通过创建一个脚本,执行睡眠的命令,通过另一个标签查看进程ID,可以看到前三种执行方式,会在后面新建一个子进程,而后者两种就在自己的进程中执行。 

四.shell解释器在哪

查看路径 cat /etc/shells 或 chsh -l       查看当前使用的shell用 echo $SHELL

  1. /bin/sh: 这通常是一个链接,指向系统中默认的 shell。在许多系统中,它可能链接到 Bash 或其他 shell 的变体,如 Dash 或者 Bourne shell (sh)。

  2. /bin/bash: Bash shell 的标准路径。Bash 是一个常见的 Unix shell,也是许多 Linux 系统默认的 shell。

  3. /usr/bin/sh: 一些系统中的备用 shell 路径。它可能链接到系统默认的 shell,也可能是其他的 shell,取决于系统的配置。

  4. /usr/bin/bash: 另一个 Bash shell 的常见路径。通常,/bin/bash/usr/bin/bash 是相同的文件的两个硬链接。

  5. /bin/tcsh: Tcsh 是 C shell (csh) 的变体,它提供了许多与 C shell 类似的功能,并添加了一些新特性。它通常用于交互式的命令行操作。

  6. /bin/csh: C shell 是一种 Unix shell,具有类似 C 编程语言的语法。它在一些 Unix-like 系统中作为默认 shell,但在许多系统中已经被其他更现代的 shell 取代了。

#命令格式
chsh [选项] [参数]

-s : 指定要更改为的新 shell。用户可以通过指定 shell 的路径或简单地指定 shell 的名称来进行选择。

-l : 列出系统上可用的 shell。这可以帮助用户查看可以作为新 shell 的选项。

-u : 显示关于如何使用 chsh 命令的帮助信息。

-v : 显示 chsh 命令的版本信息。

#例:将用户"testuser"的登录shell更改为/bin/bash
chsh -s /bin/bash testuser

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/548873.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

负载均衡集群——Nginx

目录 1.Nginx反向代理实战 2.Nginx 反向代理和负载均衡实践 实验操作步骤 步骤 1 Nginx1 和 Nginx2 配置 步骤2 测试资源是否可用 步骤 3 安装和配置 Nginx 代理 步骤 4 代理服务器配置检测 步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机 步骤 6 将虚拟主机添加入后端主机组…

鸿蒙南向开发:【编译和烧录】指导

编译 #进入源码目录 #rm -rf ohos_config.json #hb set #. #如下图所示,按↑↓键,选择需要编译的工程名,然后回车 #hb build -f #然后回车,等待屏幕出现:BUILD SUCCESS字样,说明编译成功。如下图 #编译生成的固件在…

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。 以下是移植效果: 接口:I2C 使用引脚:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…

TiDB存储引擎TiKV揭秘

目录 一、TiKV 介绍 二、RocksDB 三、TiKV 与 RocksDB 架构 3.1 用户数据保存 3.2 TiKV 中 Region 一、TiKV 介绍 TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。…

一文读懂BTC生态新贵Giants Planet,将L2与现实世界整合

前言 获新加坡主权基金鼎力扶持,Giants Planet将引爆Web3新风向。 随着年前BTC现货 ETF 的获批,加密世界涌入大量的资金,BTC价格也成功突破新高。与之相比,传统金融的弊端日益凸显,且大部分资产涨幅都低于BTC&#xf…

RACE IPEMD:构建安全基石的密码学原理与实践

title: RACE IPEMD:构建安全基石的密码学原理与实践 date: 2024/4/16 16:53:56 updated: 2024/4/16 16:53:56 tags: IPEMD哈希算法SHA-1SHA-2/3消息摘要数字签名安全分析 前言 在当今信息爆炸的时代,数据安全和隐私保护变得尤为重要。密码学作为信息安…

鑫鹿助贷CRM系统:助力助贷行业实现智能商业转型

数字化时代,商业竞争愈发激烈,助贷行业如何把握商机、实现高效管理、打造高回报率的商业模式,成为了助贷行业老板们比较关注的问题,而鑫鹿助贷CRM管理系统,正是这场商业变革中的得力助手,系统功能完善&…

YOLOv8 目标检测项目实操

一 yolov8 背景介绍 YOLOv8是一种尖端的、最先进的(SOTA)模型,建立在以前 YOLO 版本的成功基础上,并引入了新的特性和改进,以进一步提高性能和灵活性。YOLOv8被设计为快速、准确、易于使用,这使它成为一个很好的选择,…

【Leetcode每日一题】 动态规划 - 最小路径和(难度⭐⭐)(58)

1. 题目解析 题目链接:64. 最小路径和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路梳理: 一、状态表示 在路径类问题中,状态表示通常有两种形式: 从 [i,…

华为配置路由式Proxy ARP示例

配置路由式Proxy ARP示例 组网图形 图1 配置路由式Proxy ARP组网图 路由式Proxy ARP简介配置注意事项组网需求配置思路操作步骤配置文件 路由式Proxy ARP简介 企业内部进行子网划分时,可能会出现两个子网网络属于同一网段,但是却不属于同一物理网络的情…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录02——机械臂几何法与DH表示法

系列文章目录 本科毕设正在做多轴机械臂相关的内容,这里是一个学习机械臂运动学课程的相关记录。 如有任何问题,可发邮件至layraliufoxmail.com问询。 1. 数学基础 2. 机械臂几何法与DH表示法 文章目录 系列文章目录一、手臂几何法1.机械手臂2.机械手臂…

创建影子用户

文章目录 1.认识影子用户2.创建隐藏账户并加入管理员组3.修改注册表3.删除用户4.添加管理员权限 1.认识影子用户 影子用户通常指的是那些在系统用户列表中不可见,但在某些情况下可以进行操作的用户。在内网渗透过程中,当我们拿到shell时,肯定…

Python 物联网入门指南(四)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第九章:构建光学字符识别的神经网络模块 本章介绍以下主题: 使用光学字符识别(OCR)系统 使…

leetcode hot100_day20

4/14/2024 128.最长连续序列 自己的 这是前两天做一半的题目了。这题给我的教训就是用哈希表的时候一定一定要考虑重复元素的问题!!!! 这题让我想到了最长递增子序列,只是名字有点像。子序列和子数组还不一样一个连续…

实验案例二:配置路由器实现互通

一.实验环境 实验用具包括两台路由器(或交换机).一根双绞线缆,一台PC,一条Console线缆。 二.需求描述 如图6.14所示,将两台路由器的Gig0/0接口相连,通过一台PC连接设备的Console端口并配置IP地址&#x…

健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)

健身管理小程序目录 基于微信开发健身管理小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码…

【重磅更新】开源表单系统填鸭表单v5版发布!

亲爱的TDucker,你们好。 真诚感谢您对填鸭表单的关注与支持。今天我们将为您带来新版本的更新说明,以便您更好的使用我们的产品。 社区版版V5更新概览: ✅ 增加WebHook数据推送功能,集成TReport实现数据大屏展示。 ✅ 增加主题…

在linux上面安装xxl-job2.4.0

问题 由于预算有限,用不起lambda去跑定时任务,现在只能在EC2上面自己安装一个单机版的xxl-job了。 步骤 下载压缩包 在这个页面下载压缩包,并本地解压。 https://github.com/xuxueli/xxl-job/releases mysql准备 找到它默认身数据库初始…

AI决策与专家决策,您更喜欢哪种决策方式?

HI,我是AI智能小助手CoCo。 CoCode开发云智能助手CoCo “大家好,我是CoCode开发云的AI智能小助手CoCo,现在为大家播放关于CoCode开发云AI大家庭的最新消息: 欢迎AI家庭新成员:AI自动决策”。 AI自动决策发布 CoCode开…

零基础自学Python,啃透这五本书就够了!

选择合适的学习资源 在自学Python的前期,选择一本适合初学者的Python入门书籍或在线教程,从基础开始学习,好的入门书籍或在线教程会按照逻辑顺序组织知识,从基础概念开始,逐步引导你深入学习Python编程语言。这种系统…