首页 > 代码库 > Linux Unix shell 编程指南学习笔记(第三部分)
Linux Unix shell 编程指南学习笔记(第三部分)
第十三章 登陆环境
登陆系统时,输入用户名和密码后,如果验证通过,则进入登录环境。
登录过程
文件/etc/passwd
$HOME.profile
定制$HOME.profile
/etc/passwd 文件解析(抽取其中的一行作为示例):
1 2 3 4 5 6 7 root: <span style="white-space:pre"> </span>x: 0: 0: root: <span style="white-space:pre"> </span>/root: <span style="white-space:pre"> </span>/bin/bash 第 1 域 : 登录名 第 2 域 : 加密后的密码 第 3 域 : 用户标识号(用于系统内部区分用户,如果多个用户对应的用户标识号一样,系统认为他们是同一个用户,但可以有不同的口令,不同的主目录以及不同的登陆shell) 第 4 域 : 组标识号(标识用户所属的组,他对应/etc/group 中的一条记录) 第 5 域 : 用户全名 第 6 域 : 用户根目录 第 7 域 : 用户默认的shell
登陆成功后,系统执行两个环境设置文件:/etc/profile 和 用户根目录下 .profile
/etc/profile
该文件包含:
1、全局或局部环境变量
2、PATH 信息
3、终端设置
4、安全命令
5、日期信息或放弃操作信息
stty : stty 用于设置终端特性。
logout文件(在ubuntu 12.04中 为用户根目录下的 .bash_logout 文件):
此文件保存有执行e x i t命令时,在进程终止前执行的命令。
第十四章 环境和shell变量
shell 变量
环境变量
变量替换
导出变量
特定变量
向脚本传递信息
在系统命令行下使用位置参数
shell 变量:shell 变量用一个 “有效的”字符串表示,用于暂存信息。
本地变量: 本地变量在用户现在的shell生命周期的脚本中使用,用户不能在其他shell或进程设置此变量有效。
变量的各种设置模式:
Va r i a b l e - n a m e = v a l u e设置实际值到v a r i a b l e - n a m e
Va r i a b l e - n a m e + v a l u e 如果设置了v a r i a b l e - n a m e,则重设其值
Va r i a b l e - n a m e : ? v a l u e 如果未设置v a r i a b l e - n a m e,显示未定义用户错误信息
Va r i a b l e - n a m e ? v a l u e 如果未设置v a r i a b l e - n a m e,显示系统错误信息
Va r i a b l e - n a m e : = v a l u e 如果未设置v a r i a b l e - n a m e,设置其值
Va r i a b l e - n a m e : - v a l u e 同上,但是取值并不设置到v a r i a b l e - n a m e,可以被替换
清除变量:unset variable-name
显示所有变量: set (readonly 显示所有的只读变量)
连接变量值: ${var1}${var2}${var3}${...} (将变量并排就可以实现变量结合在一起)
测试变量是否已经赋值: var1:-newValue (如果var1 已经赋值则使用原来的值,否则用newValue作为新的值,但是newValue并没有赋值给var1)
设置只读变量,格式:
variable-name = value readonly variable-name
环境变量
环境变量用于所有用户进程。环境变量可以在命令行中设置,但用户注销时这些值将丢失,因此最好在. p r o f i l e文件中定义。环境变量应用于用户进程前,必须用e x p o r t命令导出。环境变量与本地变量设置方式相同。
设置环境变量 var=value:export var 或
var = value export var
显示环境变量和显示本地变量一致,使用${var} ,
查看所有的环境变量: env
清除环境变量: unset var (跟清除本地变量一致)
嵌入shell变量
linux预留的环境变量,通常在/etc/profile中建立这些嵌入变量。
CDPATH:cd 一个目录时先查找这个变量,如果存在则此目录成为当前目录。
EXINIT:保存使用vi编辑器时的初始化选项。
HOME:保存用户根目录,使用cd直接进入该目录
IFS:指定shell默认域分隔符(可以指定多个域分隔符)
LOGNAME:保存登录名
MAIL:保存邮箱路径名
MAILCHECK:邮箱检测频率(/s),默认是60秒。
PATH:保存命令或脚本查找的目录顺序(频繁-->一般-->不常用)
PS1:基本提示符(包含shell提示符),默认root为 # , 其他用户为 $
PS2:附属提示符,多用于多余一行的命令
SHELL:保存默认shell,通常在/etc/profile中配置
TERMINFO:保存终端配置文件位置。
TERM:保存终端类型。
TZ:保存时区值。
一下环境变量没有提供默认值(上面的环境变量中某些在ubuntu12.04中也没有提供默认值)
EDITOR:设置默认编辑器
PWD:当前目录名
PAGER:保存屏幕翻页命令
MANPATH:保存系统中man文件的目录
LPDEST 或 PRINTER: 默认打印机名
导出变量
使用 export 导出变量后,子进程就可以 “看得见”该变量。
位置变量(位置变量参数),只读的
使用位置变量参数可以想shell脚本传递信息。该参数可以为任意多,但是只有前面 9 个可以被访问
$ 0$ 1 $ 2$ 3 $ 4$ 5 $ 6$ 7 $ 8$ 9 ($0为脚本名字,其余为参数)
特定变量,只读的
特定变量表:
$ # 传递到脚本的参数个数 $ * 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 $ $ 脚本运行的当前进程I D号 $ ! 后台运行的最后一个进程的进程I D号 $ @ 与$ #相同,但是使用时加引号,并在引号中返回每个参数 $ - 显示s h e l l使用的当前选项,与s e t命令功能相同 $ ? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
第十五章 引号
双引号可引用除字符$、`、\外的任意字符或字符串。
单引号与双引号类似,不同的是如果屏蔽了其特殊含义时,会将单引号和其内部的值作为一个新的字符串。
BOy=‘boy’ echo "like '$BOY'" echo "like "$BOY""两个echo 输出的内容是不一样的,前面的echo 多了 一对单引号。
反引号:shell 将 反引号括起来的 内容 作为系统命令,并执行。
反斜线:反斜线用于屏蔽特殊字符的特殊意义。
Linux Unix shell 编程指南学习笔记(第三部分)