Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369442
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2469
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-16 23:51
个人简介

活泼开朗是我的特性。

文章分类
文章存档

2014年(27)

2013年(46)

分类: 网络与安全

2014-03-04 15:18:59

Shell组成

[root@pankuo shell]# vim test.sh


#!/bin/bash

#用途:这是一个简单的shell示范程序

function show_name() {

      echo "今天是$1,你大大$2,来自$3"

}

name="$1"

ip="192.168.0.117"

today=`date +%F`


if [ $# != 1 ];then

      echo "Usage: . /$0 [使用者名称]"

      exit

fi


show_name "$today""$name" "$ip"


sleep 5

echo

echo "Bye-Bye"


[root@pankuo shell]# chmod +x test.sh

[root@pankuo shell]# bash test.sh

Usage: . /test.sh [使用者名称]

[root@pankuo shell]# bash test.sh pan

今天是2014-03-04,你大大pan,来自192.168.0.117


Bye-Bye



解释:定义函数show_name

定义变量name iptoday

调用函数

         Sleep 暂停5秒

执行bash shell的方法

#./test.sh 或者  source /root/shell/test.sh



#pwd

/root/shell

#/root/shell/test.sh


#sh test.sh


Bash shell 排错方法

#bash –v test.sh jack



检查程序行

#bash –n test.sh


追踪脚本的执行


#bash –x test.sh

强制变量一定要经过声明才能使用

Shopt –s –o nounset  


Bash shell执行的原理

登录主机后我们所处的已经是一个bash shell 这个shell 叫做loginshell  是我们以后执行脚本的父shell



[root@pankuo shell]# vim cd.sh


#!/bin/bash

cd /var/log

touch cd.txt


[root@pankuo shell]# chmod +x cd.sh

[root@pankuo shell]# ./cd.sh

[root@pankuo shell]# cat /var/log/cd.txt

[root@pankuo shell]#


你会发现执行完我们还在当前的目录

[root@pankuo shell]#  . cd.sh

[root@pankuo log]#


会发现这样操作就到了刚才脚本里的目录

.和source    会让脚本只在父shell 环境执行


子shell在开启子shell


[root@pankuo shell]# echo $SHLVL

1

[root@pankuo shell]# bash

[root@pankuo shell]# echo $SHLVL

2

[root@pankuo shell]# bash

[root@pankuo shell]# echo $SHLVL

3

[root@pankuo shell]#


每执行一次就进入下一层shell


Bash shell的启动配置文件

Bash有5种运行模式

分别是互动模式,非互动模式,以sh名称调用,posix模式和限制功能模式



登录

登录主机时,login shell  先执行/etc/profile,接着bash检查用户的主目录中是否有.bash_profile,或者是否有.bash_login,或者是否有.profile ,若有则会读取并执行其中的一个文件执行顺序

.bash_profile    .bash_login .profile

注销

.bash_logout

执行新shell

1.执行交互式的shell:例如直接执行bash 产生一个子shell 此时 bash会读取并执行/etc/bash.bashrc,以及主目录中的.bashrc

2.执行shell脚本:例如执行脚本 test.sh 它会检查BASH_ENV  它会去看指向的文件


执行bash –r或以rbash的名称调用

rbash其实只是一个指向bash的soft link 执行rbash 或 bash –r称为受限模式

例如:不能使用cd指令,不能设定或取消环境变量,使用的命令名称中不可以含有/字符,内置命令参数不能使用含有/的文件等


阅读(1818) | 评论(0) | 转发(0) |
0

上一篇:shell前基础知识

下一篇:shell基本操作简介

给主人留下些什么吧!~~