CentOS 7 Shell脚本编程第三讲 Shell 变量

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

上文思考问题中讲到其他方法查看系统变量。本文不完全列举以下几种。

#打印系统环境变量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变量为空,实际无输出,显示为空行

下一讲继续介绍变量使用细节。敬请期待

转载于:https://my.oschina.net/u/1011130/blog/3030428

你可能感兴趣的:(CentOS 7 Shell脚本编程第三讲 Shell 变量)