1. 程式人生 > >SHELL環境變量初識(第六章)

SHELL環境變量初識(第六章)

command include 工作環境 linux 程序

1. 環境變量的概念
環境變量是用來存儲shell會話和工作環境,方便shell輕松訪問到設定值中的程序,環境變量分為全局變量和局部變量

2. 全局變量
全局變量在shell和它的子shell中都生效,可以通過env和printenv命令來查看當前環境變量
[[email protected] ~]# env
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.186.1 63544 22
SELINUX_USE_CURRENT_RANGE=

QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/1

[[email protected] ~]# print env
-bash: print: command not found
[[email protected] ~]# printenv
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.186.1 63544 22
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/1
USER=root

3. 局部變量
局部變量僅對當前shell生效,沒有特定的命令可以查看,可以通過set命令可顯示所有已定義的變量
變量賦值:
變量名=‘變量值‘
變量值:
直接用字串;name=‘username‘
變量引用;name=‘$username‘
命令引用;name=`COMMAND` ,name=$(COMMAND)
變量引用:$(name),$name
"":弱引用,其中的變量引用會被替換成變量值
‘‘:強引用,其中的變量引用不會被替換成變量值而保持原字符串
變量銷毀:
unset name

4. 其他類型變量
本地變量:僅對當前shell進程生效,對當前shell之外的shell和zishell都無效。
位置變量:$1;$2......來表示,用於讓腳本在腳本代碼中調用通過命令行傳遞它的參數;
$1;$2......:對應調用第1、2.......參數
shift [n]
$0:命令本身
$*:傳遞給腳本所有參數,把所有參數一個個傳給腳本
$@:傳遞腳本給所有參數,把所有參數當成一個成體傳遞給腳本
$#:傳遞給腳本參數的個數。

5. 設置全局環境變量
變量申明、賦值:
export name=VALUE
declare -x name=VALUE
變量引用:
$name;$(name)
顯示所有環境變量:
export;env;printenv
銷毀:
unset name
修改當前SHELL的全局環境變量可對當前shell和其子shell生效,但是對其父shell沒有影響。
bash中有很多內建的環境變量:PATH;SHELL;UID;HISTSIZE;HOME;PWD;OLD;HISTFILE;PS1
只讀變量:
readonly name
declare -r name
變量命令法則:
不能使用程序中的保留字,如if,for;
只能使用數字、字母及下劃線,且不能以數字開頭
見名知義

6. 設置PATH環境變量
使用echo $PATH 命令可查看當前PATH環境變量,PATH變量所有的參數通過(:)隔開,增加PATH變量可使用 PATH=$PATH:newpath,來修改。
長期生效則需要修改配置文件
BASH配置文件按照生效範圍劃分,可分為如下兩類:
全局配置:
/etc/profile /etc/profile.d/*.sh /etc/bashrc
個人配置:
~/.bash_profile ~/.bashrc

按照功能可分為兩類:
profile類:為交互式登錄的shell提供配置
全局:/etc/profile /etc/profile.d/*.sh
個人:~/bash_profile
功能:定義環境變量,運行命令或腳本
bashrc類:為非交互式的shell提供配置
全局:/etc/bashrc
個人:~/bashrc
功能:定義變量別名,定義本地變量
配置文件讀取次序:
交互式登錄:在終端使用用戶名密碼登錄或在當前用戶下使用su - USERNAME 和 su -l USERNAME 切換用戶。
/etc/profile --> /etc/profile.d/*.sh --> ~/bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登錄:使用su USERNAME切換用戶或圖形界面下打開的終端
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
7. 數組變量
數組能存儲多個值,可以整體調用,也可單獨待用,示例如下:
創建一個數組:
[[email protected] ~]# mytest=(one two three four five six) ####數組中存儲了6個值,分別對應位置編號0-5
顯示數組中第二個值:
[[email protected] ~]# echo ${mytest[2]}
three
顯示數組中所有值:
[[email protected] ~]# echo ${mytest[*]}
one two three four five six
銷毀數組中0位對應的值:
[[email protected] ~]# unset mytest[0]
[[email protected] ~]# echo ${mytest[*]}
two three four five six
銷毀0對應的值one後,該位置仍被占用:
[[email protected] ~]# echo ${mytest[0]}

[[email protected] ~]#
銷毀數組:
[[email protected] ~]# unset mytest
[[email protected] ~]# echo ${mytest[*]}

[[email protected] ~]#

本文出自 “學海無涯” 博客,謝絕轉載!

SHELL環境變量初識(第六章)