2019独角兽企业重金招聘Python工程师标准>>>
上文思考问题中讲到其他方法查看系统变量。本文不完全列举以下几种。
#打印系统环境变量PATH
[root@promote ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@promote ~]# export
#其他方法还有set 、declare等
[root@promote ~]# set
变量字面意思可以理解为变和量,分别代表变化和值(量)。使用赋值符号=。量推荐使用""。本文推荐=读作赋值,不要读作等于。其他编程语言有==类似于等于。
变量可以分为全局变量和局部变量,顾名思义,可以理解为变量所在区域作用范围不同,界限不是很明显。
变量还可以分为系统环境变量和用户自定义变量。系统环境变量对所有用户生效,用户环境变量对当前用户生效。
系统变量用于定义Shell环境,保证SHell脚本正常输出,确定用户名称、命令所在目录、终端类型、版本、主机名等众多信息。查看系统变量方法已经介绍过(env等命令)。
#演示常见几个变量,更多信息使用env命令
[root@promote bin]# echo $HOME
/root
[root@promote bin]# echo $USER
root
[root@promote bin]# echo $UID
0
[root@promote bin]#
export 命令创建环境变量,一般临时使用或者每次使用均需要创建。关闭终端后变量消失。举例如下
[root@promote ~]# export name="tom"
[root@promote ~]# echo $name
tom
#退出用户终端,XShell退出用户终端需要重新连接服务器
[root@promote ~]# exit
登出
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(CentOS7 演示环境) at 15:49:05.
Type `help' to learn how to use Xshell prompt.
[C:\~]$
Connecting to 192.168.216.140:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Mar 31 14:33:59 2019 from 192.168.216.1
[root@promote ~]#
#name变量为空,实际无输出,显示为空行
[root@promote ~]# echo $name
[root@promote ~]#
#方法2
[root@promote ~]# export name
[root@promote ~]# name="tom"
[root@promote ~]# echo $name
tom
#方法3
[root@promote ~]# name="tom";export name
#方法4
[root@promote ~]# declare -x name="bill"
[root@promote ~]# echo $name
bill
[root@promote ~]#
注意对比以上各种方法不同点。
变量名称以字母和下划线开头,可以接数字或字母,不要有含特殊符号。变量内容可以以单引号或双引号包围,也可以不使用,三者具有不同意义。
Java 在Linux 系统中应用广泛,分为Oracle JDK和OpenJDK等,本文以yum 安装 OpenJDK 为例演示用户自定义变量创建过程。
#查看文件名包含java软件列表
[root@promote ~]# yum -y list java*
#安装OpenJDK 1.8.0
[root@promote ~]# yum -y install java-1.8.0-openjdk*
#卸载OpenJDK 1.8.0,不执行该命令
[root@promote ~]# yum -y remove java-1.8.0-openjdk*
#查看Java版本
[root@promote ~]# java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
[root@promote ~]#
[root@promote bin]# which java
/usr/bin/java
[root@promote bin]# ls -l /usr/bin/java | grep "java"
lrwxrwxrwx 1 root root 22 3月 31 15:33 /usr/bin/java -> /etc/alternatives/java
[root@promote]# ls -l /etc/alternatives/ | grep -F "java"
[root@promote]# export JAVA_HOME=/etc/alternatives/
如果希望环境变量永久生效,需要将环境变量写入用户或系统配置文件。不同系统和用户配置文件分别位于
#用户变量,以root为例,表示root用户当前文件夹隐藏文件.bashrc
[root@promote ~]# ls -l .bashrc
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
#系统变量
[root@promote bin]# ls /etc/bashrc
/etc/bashrc
[root@promote bin]# ls /etc/profile
/etc/profile
[root@promote bin]#
Shell 解释器调取配置文件具有优先级,优先调取/etc/bashrc文件,然后根据需求分别读取其他配置文件。
使配置文件生效使用 source 配置文件 命令。
取消变量使用unset命令。可以取消用户和系统环境变量。
[root@promote ~]# unset JAVA_HOME
[root@promote ~]# echo $USER
root
[root@promote ~]# unset $USER
[root@promote ~]# echo $USER
#name变量为空,实际无输出,显示为空行
下一讲继续介绍变量使用细节。敬请期待