本章内容:
什么是环境变量
创建自己的局部变量
删除环境变量
默认shell环境变量
设置PATH环境变量
定位环境文件
数组变量
很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息,
本章: 存储在哪里, 怎样使用, 以及怎样创建自己的环境变量
6.1 什么是环境变量
bash shell用一个叫做环境变量的特性来存储有关shell会话和工作环境的信息
全局变量和局部变量
6.1.1 全局环境变量(对shell会话和所有生成的子shell可见)
全局环境变量: 对所有shell会话和所有生成的子shell可见
局部变量: 只对创建它们的shell可见(子shell)
$ printenv
//显示所有的全局环境变量
$ printenv HOME
$ echo $HOME
$ ls $HOME //显示HOME列表当前的
全局变量可以用在所有的子shell中,比如
$bash
$ echo $HOME
6.1.2 局部环境变量(对当前的shell以及以后的shell保持可见)
$ set 显示全局变量和局部变量以及用户变量
6.2 设置用户定义变量
6.2.1 设置局部用户定义变量
$ my_variable=Hello
$ echo $my_variable //显示用户定义的变量,只能在当前的shell程序里面访问
$ my_variable=“Hello World”
$ echo $my_variable
注: 定义局部变量用小写, 定义全局变量用的是大写
2)生成的子shell无法访问当前的局部变量
6.2.2 设置全局环境变量
$ my_variable=“I am Global now”
$ export my_variable//导出为全局变量, 注意前面没有$
$ bash
$ echo $my_variable //可以在子shell里面访问
//在子shell里面修改全局变量对于全局变量没有影响
6.3 删除环境变量
创建新的环境变量, 当然也可以删除已经存在的环境变量
可以用unset操作
$ echo $my_variable
$ unset my_variable//前面不需要加$
//输出my_variable
$ echo $my_variable
注: 在子进程中删除了一个全局环境变量,这只对子进程有效. 该全局环境变量在父进程中依然可用
6.4 默认的shell环境变量
Page 111
6.5 设置PATH环境变量
在shell命令行界面中输入一个外部命令(/usr/bin/ls)
使用$ echo $PATH 获取绝对路径,否则无法使用
$ myprog //将无法出现
$ echo $PATH
$ PATH=$PATH:/home/christine/Scripts
//设置一个新的PATH就可以直接使用新的环境变量
注: 对PATH的变量修改只能持续到退出或重启系统
6.6 定位系统环境变量
让环境变量持久化, 登入Linux系统启动了一个bash shell,默认情况bash会在几个文件里查找命令。这些文件叫做启动文件或环境文件. bash检查的启动文件取决于你启动bash shell的方式。启动bash shell有三种方式
1)登录时作为默认登陆的shell
2)作为非登陆shell的交互式shell
3)作为运行脚本的非交互shell
6.6.1 登陆shell
1)登录Linux系统 -> bash shell作为登陆shell启动 -> 登陆shell从5个不同的启动文件里读取命令
/etc/profile;$HOME/.bash_profile; $HOME/.bashrc; $HOME/.bash_login; $HOME/.profile
注意: /etc/profile 是Linux启动时候默认的启动的shell
/etc/profile文件
$ cat /etc/profile
2.$HOME目录下的启动文件
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
6.6.2 交互式shell进程
如果你的bash shell不是登陆系统时候默认启动的, 不会访问 /etc/profile
$ cat .bashrc
6.6.3 非交互式shell
6.7 数组变量
可以存储多个值的变量
$ mytest = (one two three four five)
$ echo mytest: 只会输出 one
$ echo ${mytest[*]}输出整个数组
$ mytest[2]=seven改变数组的数值
使用unset删除数组比较麻烦.依然能输出空值
网友评论