shell初涉

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell初涉相关的知识,希望对你有一定的参考价值。



一.概念:

Shell俗称壳(用来区别于核),是一个命令行解释器,它接收用户命令,然后调用相应的应用程序。




二.shell的种类:

1.     sh(Bourne Shell):由Steve Bourne开发,各种UNIX系统都配有sh

2.     csh(C Shell):由Bill Joy开发,随BSD UNIX发布,它的流程控制语句很像C语言,支持很多Bourne Shell所不支持的功能:作业控制,命令历史,命令行编辑。
3.     ksh(Korn Shell):由David Korn开发,向后兼容sh的功能,并且添加了csh引入的新功能, 是目前很多UNIX系统标准配置的Shell,在这些系统上/bin/sh往往是指向/bin/ksh的符号链 接。
4.     tcsh(TENEX C Shell):是csh的增强版本,引入了命令补全等功能,在FreeBSD、Mac OS X等系统上替代了csh。
5.     bash(Bourne Again Shell):由GNU开发的Shell,主要目标是与POSIX标准保持一致,同 时兼顾对sh的兼容,bash从csh和ksh借鉴了很多功能,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。虽然如此,bash和sh还是有很多 不同的,一方面,bash扩展了一些命令和参数,另一方面,bash并不完全和sh兼容,有些行 为并不一致,所以bash需要模拟sh的行为:当我们通过sh这个程序名启动bash时,bash可以 假装自己是sh,不认扩展的命令,并且行为与sh保持一致。




三.shell的运行过程:

linux环境下,打开电脑,电脑就会运行bash。当我们进入终端时,bash会在当前目录下创建一个子

shell(为了防止恶意命令使bash出错)。当我们输入命令时,子shell会先检测是否为内置命令,如果是,则直接执行,如果不是内置命令,而是普通命令时,子shell会创建一个子进程,在子进程中exec

这个命令的二进制文件(但如果要执行的不是二进制文件,而是文本文件,并且第一行用Shebang(#! /bin/sh)指定了解释器,则子进程中exec解释器程序的代码,并且从解释器的_start开始执行,而这个文本文件被当作命令行参数传给解释器)。

PS:shell内置命令只是shell进程中的一个函数。Shell的内建命令用man bash-builtins命令查看。




四.shell变量:

(1).概述:,Shell变量由全大写字母加下划线组成,shell变量分为环境变量和本地变量。

环境变量:环境变量可以从父进程传给子进程。可以用printenv命令显示当前shell的环境变量。

本地变量:只存在于当前shell进程。可以用set命令显示当前shell进程中定义的所有变量和函数。

PS:环境变量是所有进程都有的,而本地变量是shell特有的。

         导出环境变量用的是export命令。(exprot VARNAME=value)(导出环境变量和定义环境变量可以一步完成)。

          用unset命令删除已定义的环境变量或本地变量。



(2).变量引用:

如果一个变量叫做VARNAME,用${VARNAME}可以表示它的值,在不引起歧义的情况下也可用$VARNAME表示它的值。

如    echo ${VALNAME}



(3).文件名替换:

以下用于匹配的字符称为通配符(Wildcard),具体如下:
* : 匹配0个或多个任意字符
? : 匹配一个任意字符
[若干字符] : 匹配方括号中任意一个字符的一次出现

例如:有bash.c    bbsh.c   bcsh.c     bdsh.c文件

则执行    ls      *.c                        会显示所有.c文件

                ls      b?sh.c                 会显示上面的所有文件

                ls      b[abc]sh.c          会显示bash.c    bbsh.c      bcsh.c文件



(4).

本文出自 “水仙花” 博客,请务必保留此出处http://10704527.blog.51cto.com/10694527/1789659

以上是关于shell初涉的主要内容,如果未能解决你的问题,请参考以下文章

子shell

什么是Linux的登录shell与非登录shell?

Shell基本概述

交互式shell和非交互式shell,登录shell和非登录shell的区别

shell批量执行多个shell脚本

shell脚本——shell编程规范与变量