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. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  2. jQuery插件 -- 图片随页面滚动fixed

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome

    使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下

  4. dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码

    dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...

  5. NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig

    准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...

  6. 【MFC】利用双缓冲和随机函数rand()实现蒲公英飞舞

    原始日期:2014-05-29 22:44 这几天有些懒,几乎没怎么学MFC了,好容易有个题目:用双缓冲实现蒲公英飞舞,想来想去也没想到好方法,索性动手开始 写了 ,这一写,得,出来了,呵呵,无意中产 ...

  7. 基于node.js制作爬虫教程

    前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...

  8. Linux系统vi模式下显示行号

    在命令模式下输入:set nu或者:set number都可以为vi设置行号,如果要取消的话,则输入:set nonu行号的设置是vi的环境设置,不会影响文本的内容.

  9. JAVA IO流结构图

    InputStreamReader和OutputStreamWriter分别继承自java.io包中的Reader和Writer,对他们中的抽象的未实现的方法给出实现.如: public int re ...

  10. [leetcode-530-Minimum Absolute Difference in BST]

    Given a binary search tree with non-negative values, find the minimum absolute difference between va ...