本文作者:IMWeb 江源 原文出处:IMWeb社区 未经同意,禁止转载
原文https://jiangyuan.gitbooks.io/mac/content/shell_chu_tan.html
shell
,英文的含义是“壳”,在计算机科学中,是指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。
一般意义上,这个词指操作系统中提供访问内核所提供之服务的程序,因此除了 CLI
,shell 也包含 GUI 的概念,Windows Explorer
是一个典型的图形界面Shell。
当然,本文只关注 CLI
。
mac
源自 unix
系统,所以其 shell
和 unix
一脉相承。
shell
本身的概念其实已经关注的很少,我们的最原始的印象,shell
是一门脚本语言,可用于编程。
“shell 脚本”,又称 Shell 命令稿、程序化脚本,文本文件,由一连串的 shell
命令组成,经由 Unix Shell
执行,可以进行系统管理、文件操作等。
当前主流的操作系统都支持 shell
编程,本系列所探究的 shell
编程是指 Linux 下的 shell
,讲的基本都是 POSIX 标准下的功能,所以,也适用于 Unix及 BSD(如Mac OS)。
Linux 默认安装就带了 shell 解释器。
Mac OS 不仅带了 sh、bash 这两个最基础的解释器,还内置了 ksh、csh、zsh 等不常用的解释器。
我个人倒是推荐 zsh
,zsh
会专门来篇文章介绍。
windows 出厂时没有内置 shell 解释器……只能装模拟器,比如 cygwin
。
当然 windows 上的 PowerShell
也是不俗的脚本,这个也会专门来个系列介绍。
当然,脚本解释器五花八门,下面就挑选些典型的说下。
即 Bourne shell,POSIX(Portable Operating System Interface)标准的 shell 解释器,它的二进制文件路径通常是 /bin/sh
,由 Bell Labs 开发。
Bash 是 Bourne shell 的替代品,属 GNU Project,二进制文件路径通常是 /bin/bash
。业界通常混用 bash
、sh
、和 shell
,比如你会经常在招聘运维工程师的文案中见到:熟悉 Linux Bash 编程,精通 Shell 编程。
Z Shell(Zsh) 以认为是一种 Bourne shell 的扩展,带有数量庞大的改进,包括一些bash、ksh、tcsh的功能。
理论上讲,只要一门语言提供了解释器(而不仅是编译器),这门语言就可以胜任脚本编程,常见的解释型语言都是可以用作脚本编程的,如:Perl、Tcl、Python、PHP、Ruby、Nodejs。