shell (计算机壳层)

在计算机科学中,Shell 俗称 (用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于 DOS 下的 COMMAND.COM 和后来的 cmd.exe 。它接收用户命令,然后调用相应的应用程序。

文字操作系统与外部最主要的接口就叫做 shell。shell 是操作系统最外面的一层。shell 管理 你与操作系统之间的 交互:等待你输入,之后 shell 向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

shell 提供了你与操作系统之间通讯的方式。这种通讯可以以 交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script 是命令行命令简单的组合到一个文件里面。

shell是一个介于用户和OS之间的interface(接口),专门用来帮助用户访问操作系统。

Shell的分类

基本上shell分两大类:

  • 图形界面shell (Graphical User Interface shell 即 GUI shell)
    例如:
    应用最为广泛的Windows Explorer(微软的Windows系列操作系统),还有也包括广为人知的Linux shell,其中Linux shell包括X Window Manager(BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 Xfce。

  • 命令行式shell (Command Line Interface shell ,即CLI shell)
    例如:
    sh/csh/tcsh/bash/ksh/zsh/fish等(Unix及类unix)
    COMMAND.COM(MS-DOS、PC-DOS、DR-DOS、FreeDOS等DOS;Windows 9x)
    cmd.exe(OS/2、Windows NT、React OS)
    Windows PowerShell(支持.NET Framework技术的Windows NT)

交互式shell和非交互式shell

交互式模式 就是shell等待用户的输入,并且执行用户提交的命令。这种模式被称作 交互式 是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当用户签退后,shell也终止了。

shell 也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与用户进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

Unix shell的类型

通常我们说的 shell (壳)其实是一种规范,与操作系统之间通讯的规范。可以有很多实现这种规范的具体实现
在UNIX中主要有:

  • Bourne shell(sh)
  • Korn shell(ksh)
  • Bourne Again shell(bash)
  • POSIX shell(sh)
  • C shell(csh)
  • TENEX/TOPS C shell(tcsh)
  • Bourne Shell(sh)

shell脚本中 #!/bin/bash 和 #!/bin/sh 的区别:

1、#!/bin/bash

#! /bin/bash

是通知操作系统,此 shell脚本中的命令,使用路径(/bin/)下的 bash 执行。

2、#!/bin/sh

#! /bin/sh

是通知操作系统,此 shell脚本中的命令,使用路径(/bin/)下的 sh 执行。

bash命令的参数

比如:

#! /bin/bash -ex
  • -e: 如果shell command中的任何一行failed,整个shell script file的运行会在这个command处立刻终止。

  • -x: 在shell script的执行过程中,将command以及参数全部在标准输出中console出来

更多的sh参数,你可以使用bash -c "help set" 查阅

posted on 2022-05-03 08:38  哑吧  阅读(259)  评论(0编辑  收藏  举报