Shell是一个系统程序,但与一般在后台运行的系统程序不同,它在前台提供Linux系统与用户交互操作的界面。
一、Shell变量
1.本地变量
本地变量是由用户自己定义,只作用于当前的shell环境,对于在这个shell环境下启动的子shell进程,它将不能够被有效访问。
(1)设置变量
例:MOVIE="Live is beautiful"
(2)显示变量
例:echo $MOVIE
(3)清除变量
例:unset MOVIE
(4)查看所有变量
例:set|more
2.环境变量
定义用户的工作环境,用户在当前shell或者任意子shell中获得环境变量的信息。
(1)设置变量
例:MOVIE="Live is beautiful"
export MOVIE
导出变量,使之能用于全部的shell环境
(2)显示所有环境变量
例:export
(3)清除环境变量
例:unset MOVIE
(4)常用环境变量
HOME:用户主目录绝对路径
PATH:用冒号分割的可执行文件目录
TERM:终端类型
UID:用户ID
PWD:当前工作目录绝对路径
PS1:主提示符,特权用户缺省的是#,普通用户是$
PS2:缺省辅助提示符,例如未输完命令按enter键,shell显示的辅助提示符
3.位置参数变量
共10个:$0-$9,$0表示shell程序本身,$1标示第一个位置的参数。当位置参数多于8个的时候,可以通过shift命令,将后面参数前移一位。
例:sharg.sh脚本文件为:
echo "command received $# params"
echo "command:$0"
echo "Arg1:$1"
shift
echo "Arg3:$1"
运行:./sharg.sh 80 f1 f2
结果为:command receive 3 prarams
command:./sharg.sh
Arg1:80
Arg2:f1
4.预定义变量
$# 传递到脚本的参数数量
$* 以一个单字符串显示传递到脚本的所有参数内容
$? 命令执行后返回的状态
$$ 当前进程的进程号
$! 后台运行的最后一个进程号
$0 当前执行的进程名
5.环境变量配置文件
/etc/profile
/etc/pfofile.d/*
/etc/bashrc
用户主目录下.bash_profile
用户主目录下.bashrc
/etc/profile和/etc/profile.d/*对系统所有用户都有效,用户登录的时候,bash先执行它们,再执行用户主目录下的.bash_profile和.bashrc(执行它的时候会执行/etc/bashrc)。用户主目录下的.bash_profile每次登录都运行,而.bashrc是每次打开新的终端时执行,所以用户一般修改某个环境变量,一般都放在.bashrc中