1.set
查看系统中所有已经生效的变量
-u 如果设定此项,则调用未声明的变量时会报错(默认无提示)
2.unset
删除变量(不需要加$)
3.pstree
查看进程树(可以用来识别当前shell处于几层子shell)
用户自定义变量只对其所处shell生效,其子shell是不生效的(环境变量是全局变量)
4.设置环境变量
export 变量名=变量值变量名=变量值export 变量名
5.查看环境变量
env
6.将新变量加入已经有的环境变量
# 利用变量叠加(临时生效),如要永久生效,则应该写入环境配置文件中PATH=$PATH:/root/sh
7.$PS1命令提示符设置
1. \d 显示日期 格式为"星期 月 日"2. \H 显示完整的主机名3. \t 显示24小时制时间 格式为"HH:MM:SS"4. \A 显示24小时制时间 格式为"HH:MM"5. \u 显示当前用户名6. \w 显示当前所在目录的完整名称7. \W 显示当前所在目录的最后一个目录8. \$ 提示符 root为# 普通为$
8.查询环境语系
# LANG:定义系统主语系的变量(当前生效)# LC_ALL:定义整体语系的变量# echo $LANG 查看系统当前语系# echo $LC_ALL 查看下次生效的语系# locale -a | more 查看系统支持的所有语系# cat /etc/sysconfig/i18n# 查询系统默认语系(即下次开机后永久生效的系统语系,平时我们修改的都是此次临时的,文件才永久)
9.位置参数变量
| 位置参数变量 | 备注 |
|---|---|
| $n | n为数字,$0代表命令本身,$1-$9代表1-9个参数,10及以上需要用大括号,如${10} |
| $* | 代表命令行中所有的参数,$*将其将成一个整体 |
| $@ | 代表命令行中所有的参数,$@将每个参数区分对待 |
| $# | 代表命令行中所有参数的个数 |
# $*和$@的区别# $*中所有的参数看成是一个整体,所以for只会循环一次# $@中所有的参数是独立的,所以有几个参数就会循环几次for i in "$*"doecho "The parameters is:$i"donefor y in "$@"doecho "Parameter:$y"done
10.预定义变量
| 预定义变量 | 作用 |
|---|---|
| $? | 最后一次执行命令的返回状态,成功为0,失败非0 |
| $$ | 当前进程的进程号(PID) |
| $! | 后台运行的最后一个进程的进程号(PID) |
11.后台运行
# 假设find / -name hello.sh很慢# 则用find / -name hello.sh &将其放入后台
12.接收键盘输入
read 选项 变量名
| 选项 | 备注 |
|---|---|
| -p | 提示信息 |
| -t | 秒数,指定等待输入时间 |
| -n | 字符数,只接受指定的字符数就马上执行 |
| -s | 隐藏输入的数据,适用于机密的情况 |
