- 变量在使用之前不需要声明类型,只需直接赋值;
- 每一个变量的值都是字符串;
- 有一些特殊的变量会被 shell 环境和操作系统环境用来存储一些特别的值,这类变量就被称为环境变量;
1. 预备知识
env
: 可查看所有与终端相关的环境变量;
查看某个进程的环境变量可以使用如下命令来查看:
$ pgrep gedit #使用此命令查看'gedit'应用的进程ID
12501
$ cat /proc/12501/environ #查看进程 12501 的环境变量
GDM_KEYBOARD_LAYOUT=usGNOME_KEYRING_PID=1560USER=slynuxHOME=/home/slynux
每一个变量以name=value
形式来描述,彼此之间由 null
字符(\0
)分隔。
可以用 tr
命令来将 \0
替换为 \n
,使输出更直观:
$ cat /proc/12501/environ | tr '\0' '\n'
2. 变量的赋值与使用
变量可以通过以下方式进行赋值操作:
var=value #var是变量名;value是值,如果value包括任何空白字符,那么必须使用单引号或者双引号
注意:var = value
不同于 var=value
。把 var=value
写成 var = value
是一个常见的错误,但前者是赋值操作,后者则是相等操作。
使用变量
在变量名之前加上 $
前缀就可以:
var="value" #给变量var赋值
#使用时,如下两种方式都可以
echo $var
echo ${var}
echo "Hello ${var}" #注意,单引号不行
环境变量
环境变量是未在当前进程中定义,而从父进程中继承而来的变量。
例如,环境变量 HTTP_PROXY
,它定义了互联网联建应该使用哪个代理服务器。
HTTP_PROXY=192.168.1.23:3128
export HTTP_PROXY #export命令用来设置环境变量
如何设置 PATH
环境变量
$ export PATH="$PATH:/home/user/bin"
$ PATH="$PATH:/home/user/bin"
$ export PATH
3. 补充内容
1. 获取字符串长度
length=${#var}
2. 识别当前所使用的shell
echo $SHELL
echo $0
3. 检查是否超级用户
if [ $UID -ne 0 ]; then
echo Non root user. Please run as root.
else
echo Root user
fi
4. 修改Bash提示符字符串(username@hostname:~$)
默认的 shell 提示文本是在文件 ~/.bashrc
中的某一行设置的。
-
可以使用如下命令列出设置变量
PS1
的那一行:$ cat ~/.bashrc | grep PS1 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
-
如果要设置一个定制的提示字符串,可以输入:
-
slynux@localhost: ~$ PS1="PROMPT>" PROMPT> Type commands here #提示字符串已经改变
一些特殊的字符可以扩展成系统参数:
\u
: 用户名
\h
: 主机名
\w
: 当前工作目录
网友评论