Chinaunix首页 | 论坛 | 博客
  • 博客访问: 616043
  • 博文数量: 87
  • 博客积分: 3399
  • 博客等级: 中校
  • 技术积分: 1422
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 21:20
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(51)

2011年(33)

2010年(2)

分类: LINUX

2012-03-11 19:41:59

第4章 bash shell的程序结构
一 执行bash shell的方法:

(1)进入shell script所在的目录:cd /root/tmp,执行./test.sh
(2)以绝对路径方式执行shell script: /root/tmp/test.sh
(3)直接使用bash 或者 sh执行script: cd /root/tmp   bash test.sh 或者 sh test.sh 或者 bash /root/tmp/test.sh
(4)在现行的shell中执行: . /root/tmp/test.sh 或者 source /root/tmp/test.sh

其中,方法(1)(2)需要设定script的执行权限: chmod +x test.sh 或者 chmod 755 test.sh;方法(3)(4)无需此步。
方法(1)(2)(3)执行时,现行的shell会开启一个子shell,这个子shell执行用户的script,执行完毕,此子shell随机关闭,回到现行的shell中;方法(4)是在现行的shell中直接运行script,但这种方式会影响父shell的环境,通常在系统调教时才使用。
方法(4)注意. 和/之间要有空格!

二 Bash Script排错:
bash -x test.sh: 执行script时输出命令和它们的参数,追踪script的执行;
bash -n test.sh: 读取命令但不执行;
bash -v test.sh: 读取命令并打印;

帐号的用户组,主目录位置,默认shell放在文件 /etc/passwd中,加密后的密码放在/etc/shadow中。

ps axf:查看内存中各进程的层级关系;
echo $SHLVL:查看目前位于第几层shell中;
exit:退出本层shell;

三 bash shell的启动配置文件:
bash的5种运行模式:互动模式/非互动模式(执行script)/以sh名称调用/posix模式/限制功能模式。
1 登录:login shell(即bash)先执行/etc/profile,接着依次检查用户的主目录是否包含.bash_profile,.bash_login,.profile,如果其中一个存在,则读取并执行之。
2 注销:bash会检查主目录中是否有.bash_logout,有,则读取并执行之。
3 执行新shell:
(1)执行交互式的shell:读取并执行/etc/bash.bashrc,以及主目录中的.bashrc
(2)执行shell script:检查BASH_ENV变量的内容,如果有定以,则执行该变量所定义的启动文件的内容。
4 以sh文件名调用bash:
以sh调用bash,则bash将仿照旧版的sh调用启动文件,会尽量兼容POSIX标准,而不使用bash特有的功能:
(1)login shell 调用/bin/sh: 读取并执行/etc/profile和主目录中的.profile
(2)交互式shell: 检查ENV变量的内容,如果有定以,则执行该变量所定义的启动文件的内容。
(3)shell script:不执行任何启动配置文件。
5 以bash --posix方式执行: bash兼容排POSIX,检查ENV变量的内容,如果有定以,则执行该变量所定义的启动文件的内容。
6 执行bash -r 或者 rbash:称为受限模式,bash功能受限,如不能用cd指令,不能设定或取消环境变量,不能做转向传输等,
目的时让登录者只能有少数的功能,建立安全shell环境。此时bash会读取执行主目录中的.bashrc配置文件。



阅读(2020) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~