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

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

相關文章
相關標籤/搜索