第六章 使用Linux环境变量

2017-08-07  本文已影响92人  1e42ed00ff39

本章内容:

什么是环境变量

创建自己的局部变量

删除环境变量

默认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删除数组比较麻烦.依然能输出空值

上一篇下一篇

猜你喜欢

热点阅读