登录系统时,键入用户名和密码后,系统检查是否为有效用户,为此需查询/etc/passwd文件。
登录成功后,系统执行两个环境设置文件,第一个是/etc/profile,第二个是 .profile位于用户根目录下。
环境和参数
变量可以保存路径,数组,字符串等
shell有4中类型的变量
1.本地变量
设置本地变量的格式:
variable-name = value; --设置值
unset variable; --清除变量
set --显示所有的变量
readonly variable-name; -- 只读变量
例题:
name = "lgm"
echo ${name:=dtt}
#如果name没有赋值,则在给他赋值为dtt
2.环境变量
环境变量用于所有用户进程(经常称为子进程),登录进程为父进程
1.环境变量一般用大写,要用export导出
2.环境变量可以再命令行中设置,但用户注销时这些值将会消失,通常定义到.profile文件中
设置环境变量的格式:
VARIABLE_NAME = value;
export VARIABLE_NAME;
3.位置变量
如果要想shell脚本传递信息,就可以有位置变量完成此功能
传递参数可以使任意个,但是只有前9个可以被访问,使用shitf可以改变这个限制。
$0 --脚本的名字
$1 --第一个参数
...
cat t.sh
/bin/sh
echo $0 $1
sh t.sh "hello world"
输出:t.sh hello world
4.特殊变量
$# --参数的个数
$$ --脚本的进程号
$! --后台运行的最后一个进程的进程ID号
$@ --和$@相同,但是要用引号给引起来
$? --退出的状态,0表示正确,1表示错误
$* --以一个字符串显示所有的参数。
引号
"" --字符串
'' --和字符串不同的是,如果在一个特殊在 '' 字符中,它通常会把也当做一个字符串的一部分。如a='"aaa"' 则 a="aaaa"
\ --为了防止shell误解取意,通常用\
`` --反引号,设置系统命令的输出到变量。通常是作为一个系统命令。