环境变量 


变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。


声明变量 

declare tmp

 ​​=​​ 两边不可以输入空格,否则会报错

# 正确的赋值
$ tmp=shiyanlou

# 错误的赋值
$ tmp = shiyanlou

 读取变量的值

使用 ​​echo​​​ 命令和 ​​$​​ 符号(​$ 符号用于表示引用一个变量的值,初学者经常忘记输入​)

$ echo $tmp

 ​并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。


三种变量


  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
  • Shell 本身内建的变量。
  • 从自定义变量导出的环境变量

命 令

说 明

​set​

显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。

​env​

显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。

​export​

显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

 添加环境变量

PATH=$PATH:/home/shiyanlou/mybin


变量修改

变量设置方式

说明

​${变量名#匹配字串}​

从头向后开始匹配,删除符合匹配字串的最短数据

​${变量名##匹配字串}​

从头向后开始匹配,删除符合匹配字串的最长数据

​${变量名%匹配字串}​

从尾向前开始匹配,删除符合匹配字串的最短数据

​${变量名%%匹配字串}​

从尾向前开始匹配,删除符合匹配字串的最长数据

​${变量名/旧的字串/新的字串}​

将符合旧字串的第一个字串替换为新的字串

​${变量名//旧的字串/新的字串}​

将符合旧字串的全部字串替换为新的字串

$ mypath=$PATH
$ echo $mypath
$ mypath=${mypath%/home/shiyanlou/mybin}
# 或使用通配符,*表示任意多个任意字符
$ mypath=${mypath%*/mybin}

变量删除

unset mypath

变量立即生效

​source​​ 命令来让其立即生效

$ cd /home/shiyanlou
$ source .zshrc

 source别名 .

. ./.zshrc

使用​​.​​的时候,需要注意与表示当前路径的那个点区分开。

注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要。