1. 環境變量的概念
環境變量是用來存儲shell會話和工做環境,方便shell輕鬆訪問到設定值中的程序,環境變量分爲全局變量和局部變量linux
2. 全局變量
全局變量在shell和它的子shell中都生效,能夠經過env和printenv命令來查看當前環境變量
[root@localhost ~]# 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
[root@localhost ~]# print env
-bash: print: command not found
[root@localhost ~]# 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 nameshell
4. 其餘類型變量
本地變量:僅對當前shell進程生效,對當前shell以外的shell和zishell都無效。
位置變量:$1;$2......來表示,用於讓腳本在腳本代碼中調用經過命令行傳遞它的參數;
$1;$2......:對應調用第一、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;
只能使用數字、字母及下劃線,且不能以數字開頭
見名知義bash
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. 數組變量
數組能存儲多個值,能夠總體調用,也可單獨待用,示例以下:
建立一個數組:
[root@localhost ~]# mytest=(one two three four five six) ####數組中存儲了6個值,分別對應位置編號0-5
顯示數組中第二個值:
[root@localhost ~]# echo ${mytest[2]}
three
顯示數組中全部值:
[root@localhost ~]# echo ${mytest[*]}
one two three four five six
銷燬數組中0位對應的值:
[root@localhost ~]# unset mytest[0]
[root@localhost ~]# echo ${mytest[*]}
two three four five six
銷燬0對應的值one後,該位置仍被佔用:
[root@localhost ~]# echo ${mytest[0]}
[root@localhost ~]#
銷燬數組:
[root@localhost ~]# unset mytest
[root@localhost ~]# echo ${mytest[*]}dom
[root@localhost ~]#
ide