1.环境变量的操作
1) declare :命令创建一个变量名为 tmp 的变量 其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是告诉你 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到。
分开理解, 变量是指进程中可以被改变或创建的参数(字符串/数值等); 环境是指父进程提供给子进程运行的环境;
1)当前 Shell 进程私有用户自定义变量,可通过set导出,如下自定义一个变量
1) 永久的:需要修改配置文件,变量永久生效;在Linux系统中/etc/bashrc 存放shell变量,/etc/profile存放环境变量
1) declare :命令创建一个变量名为 tmp 的变量 其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是告诉你 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到。
$ declare temp
2)
= :号赋值运算符,将变量 tmp 赋值为 desktop
$ temp = hello_world
3)
echo = $ 读取变量($表示引用一个变量的值)
$ echo $temp
hello_world //shell 命令输出内容
2.shell环境变量概念:
分开理解, 变量是指进程中可以被改变或创建的参数(字符串/数值等); 环境是指父进程提供给子进程运行的环境;
在所有的 UNIX 和类 UNIX系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。 Shell 的环境变量就是作用于自身和它的子进程的运行环境参数。
简单地理解:当前进程的子进程有效则为环境变量,否则不是。 因此,不是所有的变量都是环境变量,linux中链表一般为三种:1)当前 Shell 进程私有用户自定义变量,可通过set导出,如下自定义一个变量
$temp=hello_world
$echo $temp
hello_world
2)Shell 本身内建的变量,如PATH变量,
$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
3)从自定义变量导出的环境变量,如上述定义的temp,本身为自定义变量,但可通过export变成可导出的环境变量
$temp=hello_world
$echo $temp
hello_world
$bash //创建子shell
$echo $temp
//无输出
$exit //退出子shell
$export temp
$bash //创建子shell
$echo $temp
hello_world //有输出
3.环境变量的生存周期
1) 永久的:需要修改配置文件,变量永久生效;在Linux系统中/etc/bashrc 存放shell变量,/etc/profile存放环境变量
2)临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。如上例子
4.添加/生效/修改/删除环境变量
如上述的PATH,我们经常需要在其中添加或删除程序的执行路径
1)在PATH中添加新路径,':'作为分隔符
$PATH=$PATH:/home/xxx_user/mybin //这种情况,终端退出便会失效
$echo "$PATH=$PATH:/home/xxx_user/mybin" >> .bashrc //终端shell运行都会生效
//>> 表示将标准输出以追加的方式重定向到一个文件中,> 是以覆盖的方式重定向到一个文件中
2)生效:上述修改的配置脚本想要让其生效,除了重启外,还可以通过source命令
source .bashrc
3)修改变量
$PATH=${PATH%/home/xxx_user/mybin} //删除PATH中mybin\
4)删除变量,如删除上述定义的temp
unset temp