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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Proxmox VE 实现批量增加多网络

前言 实现批量创建多网络,更改主机名称,hosts解析 初始化网卡,主机名称,hosts解析,重启网卡 我的主机六个网卡,使用的有四个网卡,以下一键创建和初始化主机名称我是以硬件的SN号最为主机的名…

[ C++ ] STL---map与set的使用指南

目录 关联式容器 键值对 set简介 set的常用接口 构造函数 set的迭代器 set的容量 修改相关接口 find()函数 insert()函数 erase()函数 clear()函数 count函数 lower_bound()函数 upper_bound()函数 multiset简介 map简介 map的常用接口 构造函数 map的迭代…

BK9524 BEKEN博通 无线麦克风接收芯片 提供配置工具软件

BK9524 系列 无线麦克风跳频芯片 24bit/48KHz 数字无线传输 2.5 毫秒的传输延迟 数字加密/绝无串音 无线空中对码/发射跳频/接收自动跟踪 免软件开发的 TURN-KEY 方案 接收芯片 BK9524 特点: 1. 接收灵敏度:-96 dBm(V 段); -94 dBm (…

《深入Linux内核架构》第2章 进程管理和调度 (6)

目录 2.8 调度器增强 2.8.1 SMP调度 2.8.2 调度域和控制组 2.8.3 内核抢占和低延迟相关工作 2.9 小结 本专栏文章将有70篇左右,欢迎关注,订阅后续文章。 2.8 调度器增强 2.8.1 SMP调度 进程迁移: 含义:把进程从一个CPU就绪队…

BCLinux8U6系统基线加固致无法su的问题分析

本文对BCLinux8U6系统进行基线加固致无法su的问题分析。 一、问题现象 对BCLinux8U6系统进行基线加固,su切换用户失败,报错信息如下: [ABCDlocalhost ~]$ su - 密码: su: 模块未知 二、问题分析 1、错误排查 出错前&#xf…

CubelMX点灯

工程配置 开发板led引脚图 工程io配置 配置PB5 为输出 配置 PE5 为输出 时钟配置 写测试代码 配置工程,下载运行。 参考链接 STM32入门教程-1.点灯_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1dC41147eL/?spm_id_from333.788&vd_sourcee821a225c7b…

为什么需要网络切片?

网络切片是电信领域的一个突破性概念,它允许将物理网络基础设施划分为多个虚拟网络,称为切片。每个切片作为一个独立的网络运行,拥有自己的专用资源和定制的特性,满足不同应用、行业或用户的特定需求。 将网络切片视为在共享物理…

Redis-键值设计

Redis-键值设计 1.设置key的规范 遵循基本格式:【业务名称】:【数据名】:【id】 可读性强,在客户端的情况下使用:如果前缀相同会分目录层级长度不超过44字节 string数据结构的三种类型,在44字节之内是embstring 内存…

栈的解释和实现

目录 1.栈的基本概念: 2. 栈的基本功能: 3.栈的实现: 3.1 存储结构:(顺序表) 3.2 初始化:(void StackInit(stack*tmp)) 3.3 栈的销毁:(void …

ObjectiveC-第一部分-基础入门-学习导航

专题地址:MacOS一站式程序开发系列专题 第一部分:基础入门学习导航 OSX-01-Mac OS应用开发概述:简单介绍下MacOS生态、Xcode使用以及使用Xcode创建app的方法OSX-02-Mac OS应用开发系列课程大纲和章节内容设计:介绍下此系列专题的文章内容组织形式以及此系列专题的覆盖内容…

Midjourney简明教程 - 合集

Midjourney简明教程(一):有关Midjourney的基本信息 AI绘画 绘画是人类一门很古老的艺术门类,人类通过实体的器具、画笔、颜色、颜料等反映客观世界和表达主观世界。 而AI绘画则是通过借助就计算机机器学习算法和模型来生成绘画…

Docker篇(三)— Docker的基本操作

目录 镜像操作镜像名称镜像命令案例1-拉取、查看镜像案例2-保存、导入镜像 镜像操作 镜像名称 首先来看下镜像的名称组成: 镜名称一般分两部分组成:[repository]:[tag]。在没有指定tag时,默认是latest,代表最新版本的镜像 如图…