现在的位置: 首页 > 综合 > 正文

Shell概述

2018年01月09日 ⁄ 综合 ⁄ 共 3179字 ⁄ 字号 评论关闭
一、Shell概述
(1)Shell的概念及理解
   1.Shell就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序.
   2.Shell脚本是一个包含一些列命令序列的文本文件.当运行这个脚本文件时,文件中包含的命令序列得到执行.
    例程:  [root@localhost lishuai]# vim  myfirstscript.sh
               #!/bin/sh
               echo "hello embeded"
               mkdir /hehe
    该Shell脚本只做了两个任务,首先打印字符串"hello embeded",然后在根目录下创建目录hehe.
          [root@localhost lishuai]# ./myfirstscript.sh
    Shell脚本执行结束后,可以在终端上显示出字符串"hello embeded",且在根目录下创建了目录hehe.
    实际上,Shell脚本是一种自动化执行程序,它可以简化开发人员的工作量.注意,运行Shell脚本时不需要编译.
   3.Shell是一种可执行程序,它是介于kernel与用户之间的工具,为用户提供了操作内核的可能.广义的Shell可以是一条命令,也可以是KDE、GNOME之类的图形界面控制软件,因为它也可以帮助用户与kernel进行沟通.狭义的Shell是文字模式的Shell.由用户通过Shell与kernel进行沟通.
   Attention!!!
   1.用户与kernel之间是通过shell进行沟通.
   2.kernel与底层硬件之间是通过bsp进行沟通.  
     BSP:(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板.
(2)Linux中所支持的Shell类型
   1.[root@localhost lishuai]#vim /etc/shells
     通过检查该文件,可以查看系统所支持的Shell.
      /bin/sh          (已被/bin/bash所取代)
      /bin/bash        (Linux默认支持的Shell)
      /sbin/nologin
      /bin/ash
      /bin/bsh
      /bin/csh
   2.查看当前系统中使用shell的类型:#set
      在linux主机中,使用SHELL=/bin/bash
      在ARM开发板中,使用SHELL=/bin/ash
(3)Shell的功能
   1、命令与文件补齐功能
     热键tab只有在Bash Shell中才有,它可以实现命令补齐和文件补齐功能.在命令提示符中输入两个[tab][tab],则可以查询系统中所有的可执行命令.在命令提示符中输入c[tab][tab],则可以查询系统中所有以c开头的命令.
   2、命令别名设置功能
     在linux中可以使用alias来给命令重新命名.
     如:#alias lm='ls -al'
       则命令lm就等价于命令ls -al,也可以在命令行输入alias来查询当前的命令别名有哪些了.
   3、作业控制、前台、后台控制
     使用前、后台的控制,可以让工作进行的更顺利.
   4、Shell scripts的强大功能
     在DOS内,将一堆命令写在一起,形成了"批处理文件".在linux内,Shell scripts可以将需要下达的连续命令写成一个文件,该文件可以通过对话交互方式来进行主机检测.
   5、通配符
     Bash Shell支持通配符来帮助用户进行查询.
     比如:用户想知道/usr/X11R6/bin下有多少以xt开头的文件,可以使用#ls -l /usr/X11R6/bin/*xt来查询.
 
二、系统配置文件
   在命令行模式下设置的变量、命令别名等,这些操作都是针对本地登录的设置,一旦注销了Linux,则上次的设置值就不再存在了.这是由于Linux在每次重启时,都会读取某些系统环境的配置文件.若用户的配置或设置信息没有写入这些文件中,则Linux重启后用户的设置便不再存在了.
    在Linux中允许创建个人用户,因此Linux中的环境设置可分为系统设置和个人设置.
(1)/etc/profile
   该文件为系统的每个用户(root或其它用户)的环境信息,因此该文件对全部用户均有效.当用户第一次登录时,该文件被执行. 注意,该文件是登陆后读取,/etc/init.d/rcS文件在登陆前读取.
(2)/etc/bashrc
   为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
(3)~/.bash_profile
   家目录下的bash_profile文件.每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件.
(4)~/.bashrc
   家目录下的bashrc文件.该文件包含专用于用户自己的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取./etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
(5)~/.bash_logout
   家目录下的bash_logout文件.当每次退出系统(退出bash shell)时,执行该文件.
  
   以上文件是Linux主机下的几个配置文件,在ARM文件系统中也会有功能相同的文件,只是名字不同而已.
Attention!!!
1.在Linux系统中,文件/etc/rc.d/rc.local用于执行用户自己想要执行的系统命令.换句话说,任何想要在启动时就执行的工作,直接写入到该文件中,那么该工作就会在启动的时候自动加载,而不必等我们登录系统去启动.实际操作时,可以将自己制作的shell脚本的完整文件名写入到/etc/rc.d/rc.local,这样,启动时就会执行用户自己的脚本.
  例如:在家目录下编写了一个Shell脚本(filename:test.sh  pwd:/home/lishuai)
     #!/bin/bash
     mkdir -p /home/yhy/haha
     ifconfig eth0 192.168.0.50 netmask 255.255.255.0
  该脚本目的在开机时自动创建多层目录和配置系统IP地址,为了使能该脚本每次在开机启动时都执行,可以将该脚本的完整文件名写入到文件/etc/rc.d/rc.local中.
    [root@localhost /]# cd /etc/rc.d
    [root@localhost rc.d]# vim rc.local
  在文件rc.local加入以下内容:
    sh /home/lishuai/test.sh
  这样,在每次开机时系统都会运行test.sh脚本.注意,"./"是执行当前目录下的可执行文件,"sh"是执行某一目录下的可执行文件,后接可执行文件的绝对路径.
2.Linux主机中配置文件的读取顺序
    (1)读取文件/etc/profile
    (2)读取下面三个文件(~/.bash_profile、~/.bash_login、~/.profile)中的一个
    (3)读取文件~/.bashrc
    (4)读取文件/etc/bashrc
    (5)读取文件~/.bash_logout
【上篇】
【下篇】

抱歉!评论已关闭.