shell编程基础(二)


Shell是命令解释器,是Unix/Linux系统中用户和内核交互的接口。Shell脚本是shell程序设计语言编写的程序。linux

1、交互式或登陆(注册)shell
交互式注册(交互式登陆)shell:输入用户名(/etc/passwd)、密码(/etc/shadow)成功登陆系统,即调用交互式注册shell。
                                 会运行初始化文件,设置用户运行环境。
交互式非注册shell:在提示符下,输入任意shell,如ksh等,将进入交互式非注册shell。
                     会运行对应shell初始化文件,也会继承注册shell的环境。
非交互式shell:主要是运行shell脚本。
                 不执行初始化文件,但会继承注册shell环境。shell

交互式模式就是在终端上执行,shell等待你的输入,而且当即执行你提交的命令。
这种模式被称做交互式是由于shell与用户进行交互。
这种模式也是大多数用户很是熟悉的:登陆、执行一些命令、退出。
当你退出后,shell也终止了apache

非交互式模式以shell script(非交互)方式执行。
在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,而且执行它们。
当它读到文件的结尾EOF,shell也就终止了bash

2、shell和shell脚本
Shell是命令解释器,是Unix/Linux系统中用户和内核交互的接口。
Shell脚本是shell程序设计语言编写的程序。是包含若干linux/unix命令的可执行程序文本文件。服务器


bsh   /bin/sh          solaris ,AIX
ksh   /bin/ksh
csh  /bin/csh
bash /bin/bash
cat /etc/shells 查看设备全部shell
系统帐号的shell使用 /sbin/nologin ,此时没法登录系统,即便给了密码也不行。
所谓“没法登录”指的仅是这个用户没法使用bash或其余shell来登录系统而已,并非说这个帐号就没法使用系统资源。
举例来讲,各个系统帐号中,打印做业有lp这个帐号管理,www服务器有apache这个帐号管理,他们均可以进行系统程序的工做,但就是没法登录主机而已。工具

查看当前shell:
[root@u1acatap01 configs]# echo $SHELL
/bin/bash
[root@u1acatap01 configs]#spa

3、编写shell脚本
[root@APROAPP shw_temp]# cat >helloworld.sh
#!/bin/bash设计

echo "Hello World !"unix

编辑脚本内容保存至.sh为后缀的文件。能够使用vi filename.sh或cat >filename.sh(以ctrl+d结束编辑,ctrl+backspace或ctrl+u删除输入的字符),也能够使用UE,Notepad或记事本等文本编辑工具编辑文件,而后上传至服务器。继承

4、运行shell脚本

实例echo.sh
[root@mrhcatxq01 install_cacti]# cat echo.sh
#!/bin/bash

cd
echo "hello world!"
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# sh echo.sh
hello world!
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# source echo.sh
hello world!
[root@mrhcatxq01 ~]# pwd
/root
[root@mrhcatxq01 ~]# cd -
/install_cacti
[root@mrhcatxq01 install_cacti]# . echo.sh
hello world!
[root@mrhcatxq01 ~]# pwd
/root
[root@mrhcatxq01 ~]# cd -
/install_cacti
[root@mrhcatxq01 install_cacti]# ./echo.sh
-bash: ./echo.sh: Permission denied
[root@mrhcatxq01 install_cacti]# chmod +x echo.sh
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]# ./echo.sh
hello world!
[root@mrhcatxq01 install_cacti]# pwd
/install_cacti
[root@mrhcatxq01 install_cacti]#

1.运行shell脚本的方式通常有三种
      1)使文件具备可执行权限,在脚本当前目录直接执行      ./script.sh
      2)使用解释器执行                  /bin/sh script.sh 或 sh script.sh
      3)使用source,在当前shell执行     .  script.sh 或 source script.sh

2.Shell脚本不一样运行方式的区别
      1)增长可执行权限再执行脚本
        启动子进程,使用脚本中指定的shell执行脚本如:#!/bin/sh;若脚本未指定#!/bin/sh,会使用默认shell执行脚本

      2)使用shell执行脚本
        启动子进程,使用直接指定的shell执行脚本,而无论脚本里面是否执行解释器,如 sh  script.sh

      3).(空格)脚本或 source 脚本
        当前shell默认的shell解释器执行脚本,不建立子进程

3.第一行指定解释器路径,如#!/bin/bash

相关文章
相关标签/搜索