1.set

查看系统中所有已经生效的变量
-u 如果设定此项,则调用未声明的变量时会报错(默认无提示)

2.unset

删除变量(不需要加$)

3.pstree

查看进程树(可以用来识别当前shell处于几层子shell)
用户自定义变量只对其所处shell生效,其子shell是不生效的(环境变量是全局变量)

4.设置环境变量

  1. export 变量名=变量值
  2. 变量名=变量值
  3. export 变量名

5.查看环境变量

env

6.将新变量加入已经有的环境变量

  1. # 利用变量叠加(临时生效),如要永久生效,则应该写入环境配置文件中
  2. PATH=$PATH:/root/sh

7.$PS1命令提示符设置

  1. 1. \d 显示日期 格式为"星期 月 日"
  2. 2. \H 显示完整的主机名
  3. 3. \t 显示24小时制时间 格式为"HH:MM:SS"
  4. 4. \A 显示24小时制时间 格式为"HH:MM"
  5. 5. \u 显示当前用户名
  6. 6. \w 显示当前所在目录的完整名称
  7. 7. \W 显示当前所在目录的最后一个目录
  8. 8. \$ 提示符 root为# 普通为$

8.查询环境语系

  1. # LANG:定义系统主语系的变量(当前生效)
  2. # LC_ALL:定义整体语系的变量
  3. # echo $LANG 查看系统当前语系
  4. # echo $LC_ALL 查看下次生效的语系
  5. # locale -a | more 查看系统支持的所有语系
  6. # cat /etc/sysconfig/i18n
  7. # 查询系统默认语系(即下次开机后永久生效的系统语系,平时我们修改的都是此次临时的,文件才永久)

9.位置参数变量

位置参数变量 备注
$n n为数字,$0代表命令本身,$1-$9代表1-9个参数,10及以上需要用大括号,如${10}
$* 代表命令行中所有的参数,$*将其将成一个整体
$@ 代表命令行中所有的参数,$@将每个参数区分对待
$# 代表命令行中所有参数的个数
  1. # $*和$@的区别
  2. # $*中所有的参数看成是一个整体,所以for只会循环一次
  3. # $@中所有的参数是独立的,所以有几个参数就会循环几次
  4. for i in "$*"
  5. do
  6. echo "The parameters is:$i"
  7. done
  8. for y in "$@"
  9. do
  10. echo "Parameter:$y"
  11. done

10.预定义变量

预定义变量 作用
$? 最后一次执行命令的返回状态,成功为0,失败非0
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)

11.后台运行

  1. # 假设find / -name hello.sh很慢
  2. # 则用find / -name hello.sh &将其放入后台

12.接收键盘输入

  1. read 选项 变量名
选项 备注
-p 提示信息
-t 秒数,指定等待输入时间
-n 字符数,只接受指定的字符数就马上执行
-s 隐藏输入的数据,适用于机密的情况