CentOS 7 Shell指令碼程式設計第三講 Shell 變數
阿新 • • 發佈:2019-04-01
上文思考問題中講到其他方法檢視系統變數。本文不完全列舉以下幾種。
#列印系統環境變數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變數為空,實際無輸出,顯示為空行
下一講繼續介紹變數使用