Save Load
GitHub 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

Shell

Shell

Shell 的最通用含义是指用户用来键入命令的任何程序。shell 隐藏基础操作系统的详细信息,并管理操作系统的 应用程序编程接口(API) 的技术详细信息,该接口是在该操作系统上运行的程序使用的操作系统的级别。

在类Unix操作系统中,用户通常有许多命令行解释器可供选择,用于交互式会话。当用户以交互方式登录系统时,shell 程序将在会话期间自动执行。shell的类型,可以为每个用户定制,通常存储在用户的配置文件中,例如在本地passwd文件或分布式配置系统(如NIS或LDAP)中;但是,用户可以交互方式执行任何其他可用的 shell。 在具有窗口系统的主机(如 macOS)上,某些用户可能永远不会直接使用 shell。在Unix系统上,shell历来是系统启动脚本的实现语言,包括启动窗口系统,配置网络和许多其他基本功能的程序。但是,一些系统供应商已经用不同的方法(如 systemd)取代了传统的基于 shell 的启动系统(init)。

Shell

在计算中,shell 是一种计算机程序,它将操作系统的服务公开给人类用户或其他程序。通常,操作系统 shell 使用命令行界面 (CLI) 或图形用户界面 (GUI),具体取决于计算机的角色和特定操作。它被命名为shell,因为它是操作系统周围的最外层。

命令行 shell 要求用户熟悉命令及其调用语法,并了解有关特定于 shell 的脚本语言(例如 bash)的概念。

Shell 概述

操作系统为其用户提供各种服务,包括文件管理、进程管理(运行和终止应用程序)、批处理以及操作系统监视和配置。

大多数操作系统 shell 都不是底层内核的直接接口,即使 shell 通过直接连接到计算机的外围设备与用户通信也是如此。Shell 实际上是特殊的应用程序,它们使用内核 API 的方式与其他应用程序使用内核 API 的方式相同。shell 通过提示用户输入、解释其输入,然后处理来自底层操作系统的输出(非常类似于读取-评估-打印循环,REPL)来管理用户与系统的交互。由于操作系统shell实际上是一个应用程序,对于大多数操作系统来说,它可以很容易地被另一个类似的应用程序所取代。

除了在本地系统上运行的 shell 之外,还有不同的方法可以使本地用户可以使用远程系统。这种方法通常称为远程访问或远程管理。最初在多用户大型机上可用,通过串行线路或调制解调器连接到大型机的文本终端同时为每个活动用户提供基于文本的UI,远程访问已扩展到类Unix系统和Microsoft Windows。在类Unix系统上,Secure Shell协议通常用于基于文本的shell,而SSH隧道可用于基于X Window系统的图形用户界面(GUI)。在Microsoft Windows上,Remote Desktop Protocol可用于提供GUI远程访问,并且由于Windows Vista,PowerShell Remote可用于通过WMI,RPC和WS-Management进行基于文本的远程访问。

大多数操作系统 shell 都属于以下两类之一:命令行和图形。命令行 shell 为操作系统提供命令行界面 (CLI),而图形 shell 提供图形用户界面 (GUI)。其他可能性虽然不那么常见,但包括语音用户界面和非 CLI 的基于文本的用户界面 (TUI) 的各种实现。基于 CLI 和 GUI 的 shell 的相对优点经常引起争论。

终端仿真器 Terminal emulator

终端仿真器或终端应用程序是模拟其他显示体系结构中的视频终端的计算机程序。虽然术语终端通常与 shell 或文本终端同义,但术语 terminal 涵盖了所有远程终端,包括图形界面。图形用户界面中的终端仿真器通常称为终端窗口。

终端窗口允许用户访问文本终端及其所有应用程序,如命令行界面 (CLI) 和文本用户界面 (TUI) 应用程序。它们可以在同一台计算机上运行,也可以通过 telnet、ssh、拨号或直接串行连接在另一台计算机上运行。在类Unix操作系统上,通常将一个或多个终端窗口连接到本地计算机。

Bash(Unix shell)

Bash是一个Unix shell和命令语言,由Brian Fox为GNU工程编写,作为Bourne shell的自由软件替代品。它于1989年首次发布,它已被用作大多数Linux发行版的默认登录外壳。Windows 10也有一个版本可以通过Windows子系统 for Linux获得。它也是Solaris 11中的默认用户外壳。在2019年macOS Catalina发布之前,Bash也是所有苹果macOS版本的默认shell,后者将默认shell更改为zsh,尽管Bash仍然可以作为替代shell使用。

Bash 是一个命令处理器,通常在文本窗口中运行,用户在文本窗口中键入导致操作的命令。Bash 还可以从文件读取和执行命令,称为 shell 脚本。像大多数Unix shell一样,它支持文件名标注(通配符匹配),管道,此处文档,命令替换,变量以及用于条件测试和迭代的控制结构。该语言的关键字,语法,动态范围变量和其他基本功能都是从sh复制的。其他特征,例如历史,是从csh和ksh复制的。Bash是一个符合POSIX标准的shell,但有许多扩展。

shell的名字是Bourne Again Shell的首字母缩写,是Bourne shell名称的双关语,它取代了和“重生”的概念。

Bash中有一个可追溯到1.03版本(1989年8月)的安全漏洞,被称为Shellshock,于2014年9月初被发现,并迅速导致互联网上的一系列攻击。修复这些漏洞的补丁在发现漏洞后不久就被提供。

Bash 特点

Bash 命令语法是 Bourne shell 命令语法的超集。Bash支持大括号扩展、命令行完成(可编程完成)、基本调试和信号处理(使用)自bash 2.05a以来的其他功能。Bash 可以在不进行修改的情况下执行绝大多数 Bourne shell 脚本,除了 Bourne shell 脚本在 Bash 中陷入不同解释的边缘语法行为,或者尝试运行与较新的 Bash 内置版本匹配的系统命令等。Bash命令语法包括从KornShell(ksh)和C shell(csh)中提取的思想,例如命令行编辑,命令历史(命令),目录堆栈,和变量以及POSIX命令替换语法。

Unix shell

Unix shell 是一个命令行解释器或 shell,它为类 Unix 操作系统提供命令行用户界面。shell 既是交互式命令语言又是脚本语言,操作系统使用它来控制使用 shell 脚本的系统执行。

用户通常使用终端仿真器与Unix shell进行交互;但是,通过串行硬件连接或安全外壳直接操作对于服务器系统很常见。所有Unix shell都提供文件名通配符,管道,此处文档,命令替换,变量和控制结构,用于条件测试和迭代。

命令行界面

命令行界面 (CLI) 以文本行的形式处理对计算机程序的命令。处理接口的程序称为命令行解释器或命令行处理器。操作系统在 shell 中实现命令行界面,以便对操作系统功能或服务进行交互式访问。从1960年代中期开始,这种访问主要由计算机终端提供给用户,并在整个1970年代和1980年代继续在VAX/VMS、Unix系统和个人计算机系统(包括DOS、CP/M和Apple DOS)上使用。

如今,许多用户依赖于图形用户界面和菜单驱动的交互。但是,某些编程和维护任务可能没有图形用户界面,并且可能仍使用命令行。

操作系统命令行界面

操作系统 (OS) 命令行界面通常是随操作系统提供的不同程序。实现此类文本接口的程序通常称为命令行解释器、命令处理器或 shell。

命令行解释器的例子包括OpenVMS和RSX-11中的DEC的数字命令语言(DCL),各种Unix shell(sh,ksh,csh,tcsh,zsh,Bash等),CP / M的CCP,DOS的 COMMAND.COM,以及OS / 2和Windows CMD.EXE 计划,后者主要基于DEC的RSX-11和RSTS CLI。在大多数操作系统下,可以用替代方案替换默认的shell程序;示例包括用于 DOS 的 4DOS、用于 OS/2 的 4OS2 和适用于 Windows 的 4NT / Take Command。

尽管术语“shell”通常用于描述命令行解释器,但严格来说,“shell”可以是构成用户界面的任何程序,包括完全面向图形的程序。例如,默认的 Windows GUI 是一个名为 EXPLORER 的 shell 程序。EXE,如 SHELL = EXPLORER 中所定义。赢单中的 EXE 行。INI 配置文件。这些程序是 shell,但不是 CLI。

命令行解释器

在计算中,命令行解释器或命令语言解释器是一类程序的总称,旨在读取用户输入的文本行,从而实现命令行界面。

BASIC (Beginners’ All-purpose Symbolic Instruction Code)(初学者的通用符号指令代码)

在计算中,命令行解释器或命令语言解释器是一类程序的总称,旨在读取用户输入的文本行,从而实现命令行界面。

BASIC 解释器

BASIC 解释器是一种解释器,它使用户能够以BASIC语言输入和运行程序,并且在微型计算机时代的第一部分,它是计算机将启动的默认应用程序。用户应使用 BASIC 解释器键入程序或从存储中加载程序(最初是盒式磁带,然后是软盘)。