shell变量
变量是程序设计中的重要概念,在shell中,变量不仅包含程序编写中的变量,还包括环境变量。例如命令执行中依赖的PATH变量,代表用户家目录的HOME变量。
变量使用与设置
变量使用
通过${variables}
或$variables
的方式可以使用变量。
- 查看HOME变量的内容
echo ${HOME}
- 切换目录
cd ${HOME}
变量设置
- 使用等号
=
链接变量名与值,等号两侧无空格。
例如tmp=Hello
将变量tmp设置为字符串Hello
- 可使用
"
或‘
设置含有空格的变量,亦可使用转义空格。
tmp="Hello world"
tmp=Hello world
- 变量名可使用数字,字母,下划线等。开头不能使用数字。
- 获取变量,可使用$
$ echo $tmp
Hello world
- 双引号内特殊字符可保持原有特性,单引号内特殊字符均变为普通字符
$ echo "${LANG} Hello"
en_US.UTF-8 Hello
$ echo '${LANG} Hello'
${LANG} Hello
- 使用
unset variable
取消变量设置。例如,取消tmp变量。unset tmp
- 使用
export variable
可暂时将变量加入到环境中,使得可在子程序中使用改变量。
环境变量
printenv
打印所有环境变量
$ printenv
SHELL=/bin/zsh # 当前使用的shell
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl # 重要的环境变量,命令查询路径。
HOME=/home/xx # 当前家目录
USER=xx # 当前用户名
LOGNAME=xx
TERM=xterm-256color
SHLVL=1
PWD=/home/xx/linux_learn # 当前目录路径
OLDPWD=/home/xx # 前一次访问的目录
- HOME 用户家目录
- SHELL 当前使用的shell
- PATH 执行文件查找命令
- LANG 语系设置相关
- RANDOM 产生随机数的变量。通过
$RANDOM
方式获取大量随机数 - PS1 用于设置命令提示符的格式,完整设置可查bash man page,zsh man page 中未发现PS1设置相关说明。常用参数如下
- H 完整主机名
- h 在第一个小数点之前的主机名
- 显示时间 24小时制 [HH:MM:SS]
- u 显示账户名
- w 完整工作目录,从根目录开始显示。家目录使用~显示
- W 当前目录。家目录同上
- $ 提示字符,root 为#,其他用户$
[xx@xx-pc etc]$ PS1=' H u'
16:04:58 xx-pc xx
- $ 返回当前shell PID
- ? 查看上一条命令返回值,顺利运行返回值为0。
$ echo $$
4690
$ echo $?
0
- export 可将自定义变量转变为环境变量。子进程会继承父进程的环境变量,所以可使得子进程使用父进程的自定义变量。
参考
《鸟哥的linux私房菜》