本文地址:http://www.cnblogs.com/archimedes/p/linux-envionment-variables.html,转载请注明源地址。

1.什么是环境变量

bash shell用一个称作环境变量的特性来存储有关shell会话和工作环境的信息,它允许你在内存中存储数据,以便运行在shell上的程序和脚本访问

在bash shell中,环境变量分为两类:全局变量和局部变量

(1)全局环境变量

全局环境变量不仅对shell会话可见,对所有shell创建的子进程中需要获得父进程信息的程序来说非常有用。Linux系统在你开始bash会话之前就设置了一些全局环境变量

系统环境变量的一律用全大写字母以区别与普通用户的环境变量

查看全局变量,可以使用printenv命令(由于结果太多,不写出来)

要显示单个环境变量,可以使用echo命令。当引用环境变量时,必须在环境变量的名称前放置一个$符:

wu@ubuntu:~/Ccode$ echo $HOME
/home/wu

(2)局部环境变量

局部环境变量只能在定义它们的进程中可见,查看局部环境变量的列表有点复杂,在Linux系统中并没有这样的一个命令只显示局部环境变量

set命令会显示某个特定进程设置的所有环境变量,当然也包括全局变量

2.设置环境变量

(1)设置局部环境变量

一旦启动了bash shell,你就能创建在这个shell进程内可见的局部变量了,你可以通过等号来给环境变量赋值,值可以是数值或字符串:

wu@ubuntu:~$ test=testing
wu@ubuntu:~$ echo $test
testing

如果要给变量赋一个含有空格的字符串,必须用单引号来界定字符串的开始和结尾:

wu@ubuntu:~$ test=testing a long string
a: command not found
wu@ubuntu:~$ test='testing a long string'
wu@ubuntu:~$ echo $test
testing a long string

(2)设置全局环境变量

创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中

这个过程通过export命令来完成:

wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ export test
wu@ubuntu:~$ bash
wu@ubuntu:~$ echo $test
testing a long string

(3)删除环境变量

可以使用unset命令来删除环境变量:

wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ unset test
wu@ubuntu:~$ echo $test

wu@ubuntu:~$

3.默认shell环境变量

1、BASH :记录当前bash shell的路径。

2、BASH_SUBSHELL  :记录当前子shell的层次。BASH_SUBSHELL是从0开始计数的整数。

3、BASH_VERSINFO  :是一个数组包含六个元素,这六个元素显示bash的版本信息。

4、BASH_VERSION  :显示shell版本的信息。

5、DIRSTACK  :记录了栈顶的目录值,初值为空。

6、GLOBLGNORE :是由冒号分割的模式列表,表示通配时忽略的文件名集合。

7、GROUPS   :记录当前用户所属的组。

8、HOME :记录当前用户的家目录,由/etc/passwd的倒数第二个域决定。

9、HOSTNAME  :记录主机名。

10、HOSTTYPE和MACHTYPE :都是记录系统的硬件架构。

11、IFS  :用于设置指定shell域分隔符,默认情况下为空格。

12、OLDPWD   :记录旧的工作目录。

13、OSTYPE  :记录操作系统类型。

14、PATH  :环境变量,显示当前PATH环境变量的内容。

15、PPID :是创建当前进程的进程号,即当前进程的父进程号

16、PS1  :提示符变量,用于设置提示符格式,用于设置一级shell提示符环境变量。

17、PS2  :用于设置二级shell提示符环境变量。

18、PWD :记录当前路径

19、REPLY  :REPLY变量与read和select有关。

20、SECONDS:记录脚本从开始到结束耗费的时间。

21、SHELL :显示当前所用的shell

22、SHELLOPTS  :记录了处于“开”状态的shell选项列表,它只是一个只读变量。

23、SHLVL   :记录了bash嵌套的层次,一般来说,我们启动第一个Shell时。  $SHLVL=1。如果在这个Shell中执行脚本,脚本中的$SHLVL=2 。

24、TMOUT  :用来设置脚本过期的时间,比如TMOUT=3,表示该脚本3秒后过期。

25、UID : 已登用户的ID

26、USER :显示当前用户名字

4.设置PATH环境变量

PATH定义了命令行输入命令的搜素路径,如果找不到命令,它会产生一个错误:

wu@ubuntu:~$ myprog
myprog: command not found

可以添加新的搜素目录到现有的PATH环境变量,无需从头定义,PATH中的目录之间是用冒号分隔的,所以你只需引用原来的PATH值,然后再给字符串添加新的目录就行

5.可变数组

环境变量一个很好的功能就是它们可作为数组使用,要给某个环境变量设置多个值,可以把值放在括号里,值与值之间用空格隔开:

wu@ubuntu:~$ mytest=(one two three four five)
wu@ubuntu:~$ echo $mytest
one

只有第一个值显示出来了。要引用一个单独的数组元素,必须用代表它在数组中位置的数值索引值,数值要用方括号括起来:

wu@ubuntu:~$ echo ${mytest[2]}
three

要显示整个数组变量,可用星号作为通配符放在索引值的位置:

wu@ubuntu:~$ echo ${mytest[*]}
one two three four five

你也可以改变某个索引位置的值:

wu@ubuntu:~$ mytest[2]=seven
wu@ubuntu:~$ echo ${mytest[*]}
one two seven four five

你甚至可以用unset命令来删除数组中的某个值,但是要小心:

wu@ubuntu:~$ unset mytest[2]
wu@ubuntu:~$ echo ${mytest[*]}
one two four five
wu@ubuntu:~$ echo ${mytest[2]}

wu@ubuntu:~$ echo ${mytest[3]}
four

最后,可以在unset命令后跟上数组名来删除整个数组:

wu@ubuntu:~$ unset mytest
wu@ubuntu:~$ echo ${mytest[*]}

wu@ubuntu:~$

Linux环境变量的更多相关文章

  1. 三种配置linux环境变量的方法(以java为例)

    1.先确认是否为openjdk:参考 2. 修改/etc/profile文件  如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性 ...

  2. linux环境变量LD_LIBRARY_PATH

    LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径 ...

  3. Linux 环境变量和source命令 (转)

    可能是班门弄斧了,仅share给尚不知道的童鞋. 1.       问题的来源: 为什么我们编译Android代码时,需要输入:  source ./build/envsetup.sh  或者 . . ...

  4. Ubuntu Linux 环境变量

    2011年09月17日 Ubuntu 下设置adb环境变量 分类: 同Windows一样,Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用 ...

  5. 设置Linux环境变量的方法与区别(Ubuntu)

      设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别.   通过文件设置 Linux 环境变量 首先是设置全局环境变量, ...

  6. Linux环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  7. 设置Linux环境变量的方法和区别_Ubuntu

    设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...

  8. Linux 环境变量_006

    ***Linux 环境变量指系统运行程序或命令的能快速找到其位置等其它功能,不用输入复杂命令.以$PATH环境变量为例子, $PATH决定了shell指定寻找命令或程序的路径,比较执行ls命令,如果没 ...

  9. Linux学习笔记之Linux环境变量总结

    0x00 概述 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量. 0x01 Linux环境变量分类 按照生命周期来分,Lin ...

  10. 转:Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH

    转:  https://www.linuxidc.com/Linux/2017-03/142338.htm 文章写比较全  转载记录 Linux环境变量设置方法总结 PATH.LD_LIBRARY_P ...

随机推荐

  1. 【cs229-Lecture16】马尔可夫决策过程

    之前讲了监督学习和无监督学习,今天主要讲“强化学习”. 马尔科夫决策过程:Markov Decision Process(MDP) 价值函数:value function 值迭代:value iter ...

  2. Unity 动画

    Unity 并没有自带建模工具. 3D建模工具 maya, 3dmax, blender Skinned Mesh Renderer Mesh Renderer Mesh Filter Modelli ...

  3. WCF学习之二

    今天在照着网上教程做练习的时候,用IE浏览器运行的时候遇到了一些问题 “找不到类型“WCFService.Service1”,它在 ServiceHost 指令中提供为 Service 特性值,或在配 ...

  4. Python单元测试框架之pytest -- 断言

    对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...

  5. 15套漂亮的 PSD 格式的图标,不一样的视觉效果

    在 Web 设计领域,图标发挥非常重要的作用,因为美丽的和创造性的图标集可以很容易地使网页设计更有吸引力.网页设计设计师专注于每一个领域的设计,包括颜色选择.图标.创造力.混色等.正确的选择图标可以使 ...

  6. Linux网络管理

    关于OSI七层模型.TCP五层模型.TCP的三次握手.HTTP协议.DNS解析等相关的网络基础知识请参考我整理的一篇博客:http://www.cnblogs.com/wxisme/p/4699049 ...

  7. 注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了 ...

  8. [团队项目]sprint3 & 团队贡献分

    希望各组认真准备,拿出最好的阵容最好的状态,展示一学期的学习与工作成果. 各组注意完成sprint3的博客,写上团队贡献分. 将演示PPT(如果有)和代码上传到github. 截止日期:2016.6. ...

  9. C# 通过自定义特性 实现根据实体类自动创建数据库表

    .Net新手通常容易把属性(Property)跟特性(Attribute)搞混,其实这是两种不同的东西 属性指的类中封装的数据字段:而特性是对类.字段.方法和属性等元素标注的声明性信息 如下代码(Id ...

  10. ACM训练场

    http://acm.nyist.net/JudgeOnline/problemset.php http://blog.csdn.net/SJF0115/article/category/910592 ...