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

上文思考问题中讲到其余方法查看系统变量。本文不彻底列举如下几种。java

#打印系统环境变量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

变量能够分为全局变量和局部变量,顾名思义,能够理解为变量所在区域做用范围不一样,界限不是很明显。编程

变量还能够分为系统环境变量和用户自定义变量。系统环境变量对全部用户生效,用户环境变量对当前用户生效。bash

系统变量用于定义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 ~]#

注意对比以上各类方法不一样点。ui

变量名称以字母和下划线开头,能够接数字或字母,不要有含特殊符号。变量内容能够以单引号或双引号包围,也能够不使用,三者具备不一样意义。code

Java 在Linux 系统中应用普遍,分为Oracle JDK和OpenJDK等,本文以yum 安装 OpenJDK 为例演示用户自定义变量建立过程。server

#查看文件名包含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/

若是但愿环境变量永久生效,须要将环境变量写入用户或系统配置文件。不一样系统和用户配置文件分别位于rem

#用户变量,以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变量为空,实际无输出,显示为空行

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

相关文章
相关标签/搜索