1. 程式人生 > >Linux Shell基礎 環境變數、位置引數變數、預定義變數

Linux Shell基礎 環境變數、位置引數變數、預定義變數

環境變數 

 環境變數和使用者自定義變數最主要的區別在於,環境變數是全域性變數,而使用者自定義變數是區域性變數。使用者自定義變數只在當前的 Shell 中生效,而環境變數會在當前 Shell 和這個 Shell 的所有子 Shell 中生效。如果把環境變數寫入相應的配置檔案,那麼這個環境變數就會在所有的 Shell 中永久生效。如果環境變數不寫入配置檔案,那麼當前 Shell 一旦終止,這個環境變數就會消失。

在 Linux 中一般通過環境變數配置作業系統的環境,如提示符、查詢命令的路徑、使用者家目錄等,這些系統預設的環境變數的變數名是固定的,我們只能修改變數的值。

環境變數設定

t通過 export 命令將變數宣告為環境變數。命令如下:

[[email protected] ~]# export JAVAHOME="/usr/local/bin/jdk-8u131"

也可以先把變數宣告為本地變數,再用 export 宣告為環境變數,命令如下:

[[email protected] ~]# JAVAHOME="/usr/local/bin/jdk-8u131"
[[email protected] ~]# export JAVAHOME

使用者自定義變數和環境變數的區別就是:使用者自定義變數只能在當前 Shell 中有效,而環境變數在當前 Shell 和所有子 Shell 中有效。比如:

[[email protected] ~]# name="zhang san"
#把姓名宣告為本地變數
[[email protected] ~]# export age="18"
#年齡宣告為本地變數
[[email protected] ~]# gender=male
#性別宣告為本地變數
[[email protected] ~]# export gender
#性別升級為環境變數

然後使用 set命令查詢一下這些變數:

[[email protected] ~]# set
…省略部分內容…
gender
=male name='zhang san' age=18

在當前 Shell 中可以看到這三個變數。

再呼叫一次bash,也就是進入子Shell

[[email protected] ~]# bash
 [[email protected] ~]# set
#再次查詢變數
…省略部分輸出…
age=18
gender=male

在子Shell中只能看到環境變數"age"和"gender",而不能查詢到使用者自定義變數"name"

 環境變數查詢 

set 既可以查詢所有的變數,也可以查詢環境變數,也可以使用 env 命進行環境變數的查詢,命令如下:

[[email protected] ~]# env
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
…省略部分輸出…

其中,set 命令可以檢視所有變數,而 env 命令只能檢視環境變數。 

 環境變數刪除

 通過unset 命令可以刪除環境變數,命令如下:

[[email protected] ~]# unset gender
[[email protected] ~]# env | grep gender
#刪除環境變數gender