目录

1.了解Shell 

2.Shell的变量功能

本地变量

环境变量

位置变量

3.系统的环境变量


1.了解Shell 

1.1.什么是Shell?

翻译成中文shell就是外壳的意思,那他有什么用?我们知道管理整个计算机硬件的其实是操作系统的核心 (kernel),这个核心是需要被保护的,同时操作系统给会给出一个接口然你来控制这个操作系统的某些进程,而这个沟通的媒介就是Shell,在Linux系统中可能会内嵌很多种Shell,他们的目的都是和操作系统进行通信,常用的是Bash,这个Shell中的一种。

1.2.shell的工作流程

我们知道不管我们执行什么命令,到最后都是由硬件来执行这个任务的,那他的运作流程是什么呢?加入我们需要播放音乐的话,当我们下达指令,计算机需要去做什么?

1. 硬件:当然就是需要你的硬件有『声卡芯片』这个配备,去驱动你的喇叭;
2. 核心管理:操作系统的核心可以支持这个芯片组,当然还需要提供芯片的驱劢程序;
3. 应用程序:需要使用者 (就是你) 输入发生声音的指令!

7.Linux系统的Shell-LMLPHP

1.3.如何使用shell呢?

shell是一个看不到,摸不着的东西,当使用KDE桌面时,可以打开一个终端,这个终端是一个软件,它可以帮我们连接到shell,但是注意,这个终端并不是shell,它只起一个连接的作用

1.4.Linux系统中存在哪些Shell((以 CentOS 5.x 为例)?

可以通过查看档案:/etc/shells 查看当前系统Shell的种类,默认使用的是bash

7.Linux系统的Shell-LMLPHP

如果你想切换到某个shell直接在命令行上输入shell的名字就行,例如:切换到ksh

7.Linux系统的Shell-LMLPHP

1.6.为什么使用shell?

1.shell使用的是命令行,处理速度快。

2.远程管理如果使用命令的话,传输数据就小,控制流畅。

3.shell支持大量的快捷键,提高用户的效率。

1.7.shell命令和系统命令

shell是系统在安装的时候自动安装上去的,查找一个命令在哪的话,使用wihch  命令,比如 which ls

7.Linux系统的Shell-LMLPHP

找一下 cd 这个命令的位置,命令:which cd,在PATH环境变量下,找不到cd这个命令,那为什么我们可以执行cd这个命令进行目录进行跳转呢?

7.Linux系统的Shell-LMLPHP

举个例子,使用window系统来演示,我们现在直接的cmd命令行直接输入:qq这个命令,提示说找不到这个命令,当我们进入到qq安装路径下的文件时,然后再次执行这个命令时,系统就打开了一个qq的登陆接口。所以说这个命令是我在安装qq之后生成的,如果不安装这个软件的话也不会有这个命令,所以我们系统原本没有cd这个命令,但是安装了shell之后,cd是shell内置的命令,不是系统的命令。

如何查看cd命令是否属于shell内嵌的命令?

使用命令:type cd

7.Linux系统的Shell-LMLPHP


2.Shell的变量功能

2.1什么是变量?

就是让某一个特定字符串代表不固定的内容就是了,比如:a=5,左边是一个可以变化的字符,右边是一个固定的数字。

使用变量的好处就是可以让系统的运作流程变得简单。

2.2.如何使用变量

定义一个本地变量的方法:变量名=值   

注意:变量名可以由字母、数组、下划线组成,不可以使用数字开头,等号两边不要有空格。

例子1:

定义一个本地变量,a=20  。 注意:打印的时候不加 $ 字符,会吧a当作普通字符来使用,打印出来的就是a这个字符。

7.Linux系统的Shell-LMLPHP

取消一个变量的设定:unset  变量名

取消变量a的设定:

7.Linux系统的Shell-LMLPHP

 例子2:

本地变量的设定只会在当前shell起作用,不会影响到其他的子shell,现在在一个shell中创建一个变量b然后打开另一个shell看一下这个本地变量是否还存在?

7.Linux系统的Shell-LMLPHP

7.Linux系统的Shell-LMLPHP


如何定义一个环境变量?

方法:export  变量名=值

注意:如果已经设定了一个本地变量a,那么使用export  a ,可以把这个本地变量变成一个环境变量。

例子:

环境变量可以影响到所有的子shell,在父shell中新建一个变量c,给其复制20,然后打开一个子shell,然后打印这个环境变量:

7.Linux系统的Shell-LMLPHP


 2.3如何查看所有的变量?

使用命令:set , 就会显示系统所有的变量,包括本地和环境变量。

7.Linux系统的Shell-LMLPHP

7.Linux系统的Shell-LMLPHP

  • 只查看系统的环境变量

使用命令:env 

提示:使用export export -pset都可以查看系统的环境变量

7.Linux系统的Shell-LMLPHP

  • 使用export查看环境变量

可以看到使用export查看环境变量显示时多了一个词:declare

7.Linux系统的Shell-LMLPHP


 

 

例:1:

写一个脚本文件,命令为test.sh,使用vim打开,编辑脚本文件

7.Linux系统的Shell-LMLPHP

运行脚本然后给这个程序8的参数:

7.Linux系统的Shell-LMLPHP

例子2:

直接使用set设置位置变量的值,使用命令,set  1 2 3 4 5 6 7 8,然后打印位置变量的值看一下:

7.Linux系统的Shell-LMLPHP

试着设的长一点,使用命令:set 1 2 3 4 5 6 7 8 9 a b c d e,当打印第11个位置变量的时候好像出错了

7.Linux系统的Shell-LMLPHP

注意:如果使用命令:echo $11,会首先显示$1的内容然后再次显示$1的内容,同时打印出两个11了,咋看起来是11.所以当位置变量的数字大于两位数的时候,加一个大括号,比如:echo ${11} 

7.Linux系统的Shell-LMLPHP

例子3:

修改test.sh这个脚本程序,测试 $0,$#,$*的功能

7.Linux系统的Shell-LMLPHP

编辑后保存,运行脚本程序:

7.Linux系统的Shell-LMLPHP


3.系统的环境变量

  • HOME

代表用户的家目录。可以用cd 命令去到我们的家目录下,使用cd命令不加任何的参数既可以回到家目录。不同的用户拥有唯一的家目录,其实就是取用这个变量的值。

  • SHELL

记录当前系统所用的shell

  • HISTSIZE

这个与历史命令有关, 我们曾经下达过的指令令可以被系统记录下来,而记录的『笔数』则是由这个值来决定。

  • MAIL

当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱档案 (mailbox)。

  • PATH

执行文件搜寻的路径~目录与目录中间以冒号(:)分割, 由于档案的搜寻是依序由 PATH 的变量内得目录来查询,所以,目录的顺序也是重要。

  •  LANG

语系数据,很多讯息会用到它, 丼例杢说,当我们在启动某些 perl 癿程序语言档案时,他会主动的去分析语系数据文件, 如果发现有他无法解析的编码语系,可能会产生错误!一般来说,我们中文编码通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有癿时候,可能需要修订一下语系数据。

  •  RANDOM

就是『随机数』的变量!目前大多数的 distributions 都会有随机数生成器,那就是 /dev/random 这个档案。 我们可以透过这个随机数档案相关的变量 ($RANDOM) 来随机取得随机数值。在 BASH 的环境下,这个 RANDOM 变量得内容,介于 0~32767 之间,所以,你叧要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。万一我想要使用 0~9 之间癿数值呢,利用 declare 宣告数值类型。

 

 

 

 

 

10-05 16:11