bash shell用一个叫做环境变量的特性来存储有关shell会话和工作环境的信息。

全局环境变量

这对shell 会话和所有生成的子shell都是可见的。局部变量只对创建他们的shell可见。

系统环境变量基本上都是大写的,以区分普通用户的环境变量。

要查看全局变量,可以使用env或者printenv

要查看个别的环境变量,使用printenv命令

$ printenv HOME
/home/Christine

也可以使用echo命令来查看变量的值,这时是在引用某个环境变量的值,必须在变量前面加一个美元符号($),这能够使这个引用的变量作为命令的参数。

全局变量可作用于进程所有的子shell。

局部环境变量

这只能在他们的进程中可见。Linux也默认定义了标准的局部环境变量。自己也可以定义环境变量,这被用户自定义局部变量。

Linux系统中并没有只显示局部环境变量的命令。set命令会显示某个特定进程的设置的所有的环境变量,包括局部变量、全局变量、用户自定义变量。

env、printenv和set命令之间的区别在于前两个命令不会对变量进行排序,也不会输出局部变量和用户自定义变量。

设置用户定义变量

设置局部用户定义变量

$ echo $my_variable

$ my_variable=Hello
$
$ echo $my_variable

注意:

  1. 如果要给变量赋一个含有空格的字符串的值,必须使用单引号来界定,如my_variable="hello world" 。
  2. 变量名、等号和值之间没有空格。
  3. 如果生成了另外一个shell,它在子shell中就不可用了。

所有的环境变量全部使用大写,这是bash shell的标准惯例。如果是自己创建的局部变量或者是shell脚本,请使用小写字母。

设置全局环境变量

在设定全局环境变量的进程所创建的子进程中,该变量都是可见的。创建环境变量的方法是先创建一个局部变量,然后再把它导入到全局变量中。

$ my_variable="I am a Global now"
$
$ export my_variable
$ echo $ my_variable
I am a Global now
$ bash
$
$ echo $ my_variable
I am a Global now
$ exit
exit

修改子shell中的全局环境变量并不会影响到父shell中变量的值,子shell甚至无法使用export命令改变父shell中全局环境变量的值,父shell的中全局环境变量依旧保留原先的值。

删除环境变量

使用unset命令删除,注意不要使用$。

$echo $my_variable
I am Global now
$ unset my_variable
$
$ echo $my_variable $

如果要用到变量,使用$,如果要操作变量,不使用$。这条规则的例外就是printenv显示某个变量的值。

在处理全局环境变量的时候,如果你在子进程中删除了一个全局环境变量,这只对子进程有效,和修改变量一样。

设置PATH环境变量

PATH环境变量定义了用于进行命令和程序查找的目录,目录之间使用:进行分割,你只需引用原来的PATH的值,然后再给这个字符串添加新目录就行了。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$
$ PATH=$PATH:/home/christine/Scripts
$ /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/christine/Scripts

注意:如果希望子shell也能找到你的程序的位置,一定要记得把修改后的PATH环境导出。

注意:对PATH变量的修改只能持续到退出或重启系统。

使用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. Python教程(1.1)——配置Python环境

    在正式开始学习Python之前我们需要先配置好Python环境. Python Python可以从Python官方网站上,选择适合你的操作系统的版本下载.下载完之后,运行下载的可执行文件进行安装. 这 ...

  2. 一般处理程序+htm C#l简单的增删查改

    首先引用两个文件一个dll: 数据库表已创建 首先编写数据读取部分 /// <summary> /// 查询 /// </summary> /// <param name ...

  3. css3转盘抽奖

    做到一个活动,需要转盘抽奖,于是想到使用css3的动画效果,其中主要包含transition的动画过渡,transform的rotate的旋转效果,在这里只用到2d的旋转, 特别强调的是,因为需要和后 ...

  4. 使用wget下载JDK8

    每次去官网下载JDK有点烦 但是直接使用wget 又得同意协议所以 使用如下的wget就好了(注意是64位的哦) 先去官网看一下地址变化 没有如下 :修改后面的下载地址即可 注意哦~ 2.然后使用下面 ...

  5. MySql俩种分页区别(注意)

    注意俩个分页的区别哦~ SELECT * FROM city LIMIT 2 OFFSET 1; 从第二条记录开始 取二条记录 如下: SELECT * FROM city LIMIT 3,2; 从第 ...

  6. 修改cms版权等等信息

    目的:为DedeCMS换上精美多样的提示信息窗口 用到的开源项目:DedeCMS,artdialog 步骤: 1.下载include.rar文件完成后,解压得到2个php文件和一个使用说明文件,将ph ...

  7. 微信小程序开发 -- 01

    微信小程序开发基础 -- 开发前的准备 缘由 1月9日张小龙微信小程序正式上线,因为微信,所以小程序从诞生开始就头戴巨大的光环,很多的团队,公司以及开发的个体都眼巴巴的盯着这个小程序.而那个时候我却在 ...

  8. 持续集成篇-- SonarQube代码质量管理平台的安装

    视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 环境:CentOS 6 ...

  9. Kafka 源代码分析之MessageSet

    这里分析MessageSet类 MessageSet是一个抽象类,定义了一条log的一些接口和常量,FileMessageSet就是MessageSet类的实现类.一条日志中存储的log完整格式如下 ...

  10. Spring 加载静态资源

    <mvc:default-servlet-handler/> JSP 中通过标签加载js文件或者link标签加载css文件等静态资源时要在springmvc的xml文件中配置以上设置请求就 ...