Unix / Linux – 环境变量

本章将详细讨论Unix环境变量。

环境变量是Unix系统中定义的一些变量,由系统、用户或程序设置。环境变量的变量名是字符串,赋值可以是数字、文本、文件名、设备或任何其他类型的数据。

示例:

[kevin@localhost ~]$ TEST="this is test"
[kevin@localhost ~]$ echo $TEST
this is test

上面定义了一个环境变量TEST,然后使用echo命令打印变量值。

注意,环境变量的设置没有使用$符号,但是在访问它们时,使用$符号作为前缀。变量在shell中有效,离开shell后将失效。

当用户登录系统时,shell将在初始化时设置环境变量,shell将先后从下面文件中读取初始化信息:

  • /etc/profile
  • ~/.profile

完成初始化后,shell显示命令提示符:

$

用户可以在其后输入命令执行。

.profile文件

文件/etc/profile是全局配置文件,由Unix系统管理员维护,包含系统上所有用户的shell初始化信息。

文件~/.profile是用户配置文件,由用户维护,你可以向该文件添加任意shell自定义信息。

你可以查看用户目录下的.profile文件(有的系统是.bash_profile
)。使用vi编辑器打开它,查看、修改里面的环境变量设置。

设置路径

在命令提示符后键入任何命令,shell必须在执行命令之前找到该命令。

PATH变量指定shell查找命令路径。通常路径变量设置如下:

$ PATH=/bin:/usr/bin

冒号(:)分隔的每个条目都是目录,shell执行一个命令时,将在这些目录中查找命令程序,如果找不到,就会报错:


[kevin@localhost ~]$ aaa -bash: aaa: command not found

PS1和PS2变量

PS1定义了命令提示符,PS2定义了命令的继续提示符,即如果一行命令不完整但回车了,会提示用户继续输入。

可以通过修改PS1与PS2的值,修改提示符。

查看PS1:

[kevin@localhost ~]$ echo $PS1
[\u@\h \W]\$

\u, \h, \W都是具有特殊含义的字符,如下表所示:

序号 转义字符
1 \t
当前时间,格式:HH:MM:SS
2 \d
当前日期,格式:Weekday Month Date
3 \n
新一行
4 \s
当前shell环境
5 \W
工作目录
6 \w
工作目录绝对路径
7 \u
当前用户名
8 \h
当前主机名
9 \#
当前命令序号,随着执行命令数量增加
10 \$
提示符符号,如果是root用户提示符符号变为“#”,普通用户“$”

您可以在每次登录时自己进行更改,或者通过将更改添加到.profile文件中,在PS1中自动进行更改。

通过修改PS1修改提示符:

[kevin@localhost ~]$ PS1=%
%
%ls -l
total 4
-rwxrwxrwt. 1 root root 7 Apr  1 11:35 demofile
%

如果想让修改长期有效,可以在.profile文件中设置PS1。

PS2定义了命令的继续提示符,即如果一行命令不完整但回车了,会提示用户继续输入。

默认的继续提示符是>(大于号),可通过重新定义PS2变量值更改。

默认继续提示符的例子:


$ echo "this is >a test" this is a test $

定制的继续提示符例子:

$ PS2="-->"
$ echo "this is
-->a test"
this is
a test

常用环境变量

下表列出常用的环境变量:

序号 环境变量
1 DISPLAY
X11程序默认使用的显示标识符。
2 HOME
当前用户目录,cd命令的默认参数。
3 LANG
系统语言设置
4 LD_LIBRARY_PATH
链接器程序查找路径
5 PATH
命令查找路径
6 PWD
当前工作目录
7 RANDOM
表示0到32,767之间的随机整数
8 SHLVL
shell嵌套级别,每次启动bash实例时递增1。此变量对于确定exit命令是否可结束当前会话非常有用。
9 TERM
表示显示类型。
10 TZ
时区,如GMT, AST
11 UID
当前用户的数字ID,在shell启动时初始化。

示例:

[kevin@localhost ~]$ echo $HOME
/home/kevin
[kevin@localhost ~]$ echo $PWD
/home/kevin
[kevin@localhost ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kevin/.local/bin:/home/kevin/bin
[kevin@localhost ~]$ echo $TERM
xterm
[kevin@localhost ~]$



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载