Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2303914
  • 博文数量: 318
  • 博客积分: 8752
  • 博客等级: 中将
  • 技术积分: 4944
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-23 07:56
文章分类

全部博文(318)

文章存档

2019年(1)

2017年(2)

2016年(12)

2015年(2)

2014年(1)

2013年(17)

2012年(22)

2011年(9)

2010年(37)

2009年(33)

2008年(44)

2007年(43)

2006年(95)

分类: LINUX

2007-03-15 18:01:32

第三部分 登录环境

第13章  登录环境
1.登录过程
  键入用户名和密码 -> 系统检查是否为有效用户(查询/etc/passwd文件) ->登录名/密码有效则系统执行环境设置文件(/etc/profile -> $HOME/.profile)

2.密码文件/etc/passwd的格式(7个域):
 用户名:加密的密码:uid:gid:用户全名:用户home目录:用户的shell路径

3.系统全局环境设置文件/etc/profile
此文件的设置内容一般包含有:
 全局或局部环境变量: 设置环境变量便于用户及其进程和应用访问它。eg:export指令等
 PATH信息: 设置环境变量PATH,定位包含可执行文件、库文件及一般文本文件的目录位置,便于用户快速访问
 终端设置: 使系统获知用户终端的一般特性。eg:
 安全命令: 包括文件创建模式(umask)或其他安全限定。
 日期信息或放弃操作信息:

4.用户个人环境变量设置文件$HOME/.profile(不同的shell有不同的文件命名,bash为.bash_profile)
在$HOME/.profile文件中可以通过设置相关条目以不同的值或使用uset命令来覆盖/etc/profile文件中的设置。

5.stty用法  stty用于设置终端特性
Usage1: stty [option]
选项: -a :以用户看的懂的格式打印当前所有的设定。
      -g :以stty的格式打印当前设定。可以用于回存stty设置。
          eg:SAVEDSTTY=`stty -a` #保存设置; .... ; stty $SAVEDSTTY #还原stty的初始设置
Usage2: stty [-]arg     :打开[关闭]参数arg
        stty name value :设置特殊字符。eg: stty erase '^H'
       
5.logout文件
此文件保存有执行exit命令时,在进程终止前执行的命令
Bourne shell与其他shell不同,它没有.logout文件。Bash的logout文件名为$HOME/.bash_logout

第14章  环境和shell变量
6.四种shell变量: 本地变量、环境变量,两种变量被认为是特殊变量(只读):位置变量、特定参数变量

7.本地变量  在用户现在的shell生命期的脚本中使用,如果在shell中启动另一个进程或退出,此值将失效
设置变量: variable-name=value   eg: EDITOR=vi
显示变量: echo $variable-name 或 echo ${variable-name}
清除变量: unset variable-name   eg: unset EDITOR
显示所有本地shell变量: set

8.测试变量是否已经设置(变量置换)
${var:-value}  :如果变量var未定义,返回一个默认值
如果var存在且非空,则表达式${var:-value}的值为$var;如果var未定义,则表达式值${var:-value}为value
${var:=value}  :如果变量var未定义,设置var的默认值为value
如果var存在且非空,则${var:=value}的值为$var;如果var为空或未定义,则var被赋值value且表达式值为value
${var:?mesg}   :捕获未定义变量导致的错误
如果var存在且非空,则${var:?value}的值为$var;如果var为空或未定义,则打印mesg并终止脚本
${var:+mesg}   :测试一个变量的存在性
如果var存在且非空,则${var:+value}的返回值为mesg;如果var为空或未定义,则返回null

9.设置只读变量   : varname=value;readonly varname
查看所有只读变量 : readonly 或 readonly -p

10.环境变量
登录进程称为父进程,shell中执行的用户进程均称为子进程。环境变量可用于所有子进程,这包括编辑器、脚本和应用。环境变量最好在profile文件中定义。习惯上,所有环境变量均为大写。
设置环境变量: VARNAME=value; export VARNAME
显示环境变量: echo $VARNAME
以查看所有的环境变量: env   清除环境变量: unset VARNAME

11.SHELL预留的环境变量名
每一种shell有一些预留的环境变量名,这些变量名不能用作其他用途。
eg:Bourne Shell的环境变量有HOME,PATH,LANG,PWD,PS1,EDITOR...

12.export命令
export varname 命令可以把变量varname输出到子进程中,如果在子进程中修改了变量varname的值,退出子进程后,在子进程中被赋的值将不会传回到父进程。
不可以将变量从子进程导出到父进程, 然面通过重定向就可做到这一点

13.位置参数变量 位置变量的数目有可以任意多,但只有$0 - $9可以被访问
$0   $1  $2  $3  $4  $5   $6   $7  $8  $9  ($0的值为脚本名)
echo Did You See The Full Moon   

14.特定参数变量(7个)
$#  传递到脚本的参数的个数
$*  以一个单字符串显示所有向脚本传递的参数。
$$  脚本运行的当前进程ID号
$!  最后一个后台运行的进程的进程ID号
$@  与$#相同,但是使用时加引号,并在引号中返回每个参数(返回一个参数列表)
$-  显示shell使用的当前选项,与set命令功能相同
$?  显示前面最后一个命令的退出状态。0表示没有错误,其他任何值表明有错误。

15.退出状态
$?可以在任何命令或脚本中返回此变量以获得返回信息。检验脚本退出状态时,最好将返回值赋值给一个有意义的名字的变量,这样可以增加脚本的可读性。
eg: cp ok.txt /usr/local/app/def >/dev/null 2>&1
    cp_status=$?
    echo $cp_status

第15章  引号
16.双引号
使用双引号可引用除字符$(美元符号)、`(反引号)、(反斜线)外的任意字符或字符串。双引号不会阻止shell对这3个字符作特殊处理(标示变量名、命令替换、反斜线转义 )
如果要查询包含空格的字符串,经常会用到双引号。

17.单引号
如果用单引号把字符串括起来,则单引号内字符串中的任何特殊字符的特殊汉语均被屏蔽。

18.反引号
shell将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。

19.反斜线
如果下一个字符有特殊含义,反斜线防止shell误解其含义,即屏蔽其特殊含义。
下述字符包含有特殊意义:  &  *  +  ^  $  `  "  |  ?
在打印字符串时要加入八进制字符(ASCII相应字符)时,必须在前面加反斜线,否则shell作普通数字处理。

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