转自:http://beanocean.diandian.com/post/2013-11-09/40060047963

注:

1.作者的系统是Ubuntu 13.10,在其他linux发行版中环境变量的设置方式类似但会有不同;

2. 这里以环境变量PATH为例,环境变量还可以有很多,也可以自己定义名称。

什么是环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等[1]。因为一些参数可以被当做系统默认的设置,如此以来,在运行某个程序的时候就不需要再指定这些参数了。比如你总是使用某个程序,在命令行中使用时,每次运行这个程序你都要进入程序所在的目录启动程序。如果你将程序所在的目录加入环境变量后,运行程序时你只需要输入程序的名称,系统就会自动搜索到你程序的位置,而不会再出现command
not found这样的问题了。

如何设置环境变量

首先要认识几个和环境变量有关的文件[2]:

  • /etc/profile —— 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置;

  • /etc/environment —— 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量;

  • /etc/bashrc —— 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取;

  • ~/.profile —— 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;

  • ~/.bashrc —— 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;

认识以上5个文件之后,我们设置环境变量的方法也就有了。

  • 方法一:直接修改/etc/enviroment文件,这种方法的作用域是全局的,永久性的。

打开/etc/environment文件,其内容如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

在环境变量PATH中添加你要添加的路径即可。

  • 方法二:修改/etc/profile文件,这种方法的作用域是全局的,永久性的。

这个文件不是保存环境变量信息的文件,在登录时,系统只是根据它的内容对环境变量进行设置。

export PATH=$PATH:[your path1]:[your path2]:[...]
export PATH=[your path1]:[your path2]:[...]:$PATH

其中,各个PATH之间用冒号分隔,$PATH指代添加your path前的环境变量。我感觉这是计算机中一个特有的定义方式,就像 i = i + 1一样。

  • 方法三:修改/etc/bashrc或者~/.bashrc文件

这两个文件同样不是为了保存环境变量,只是在使用bash shell时进行设置而已,所以设置方法和二中一样:

export PATH=$PATH:[your path1]:[your path2]:[...]
export PATH=[your path1]:[your path2]:[...]:$PATH

对于/etc/bashrc文件,修改的作用于所以用户,但对于~/.bashrc文件,修改的仅仅作用于当前用户。这种修改的作用也是永久性的。

另外,有一个疑问,我也不是很清楚:这两个文件只是对bash shell的环境变量的设置,我感觉脱离的bash shell,不使用命令行了,这样的修改就没有意义了。这种想法到底对不对我也不是很清楚,我对bash shell的认识还很浅,这个地方就当存疑,以后对系统更了解再解决。

  • 方法四:修改~/.profile文件

这种方法和修改/etc/profile本质上是一样的,这种之不过是仅仅修改了当前用户自己的配置文件。所以作用仅限于当前用户,但同样也是永久性的。

  • 方法五:在Terminal中使用shell命令

export PATH=$PATH:[your path1]:[your path2]:[...]
export PATH=[your path1]:[your path2]:[...]:$PATH

这种方法是暂时的关闭终端这个设置也就失效了,而且作用仅仅限于当前终端,其他终端中这个设置不会启作用。

在设置成功后,可以使用命令查看设置的环境变量。

env //打印所有的环境变量

echo $PATH //打印PATH环境变量

这时我们就可以在PATH变量后看到相关的修改了。在以上前四种方法中,修改后不会设置立即生效(大家思考一下原因),需要重启或者重新登录(哪个需要重启,哪个需要重新登录?),当然使用source命令也可以。使用方法为:

source [file name]  //不要忘记路径,或者执行时要在文件路径下

如何删除对环境变量的修改

将以上方法中对配置文件的修改还原回去即可。另外,由于第五种方法由于是临时性质的且局部的,只需要关闭这个Terminal就好了

参考资料

[1] 环境变量,百度百科

[2] Ubuntu环境变量,xiaosu_521,csdn

转自:http://beanocean.diandian.com/post/2013-11-09/40060047963

Ubuntu环境变量——添加与删除的更多相关文章

  1. ubuntu环境变量添加变量

    1.sudo gedit /etc/profile打开环境变量文件夹 2.在文件末尾另起一行输入要加入的环境变量 格式: export XXXXXX=XXXXXX 3.重启 OK

  2. Python解释器安装与环境变量添加

    Python解释器安装与环境变量添加 Python解释器安装(3.6和2.7): www.python.org这个是python解释器的官网,一定要牢记. 鉴于市场上有两种python版本(2和3), ...

  3. zedboard之ubuntu环境变量设置

    在Ubuntu中有如下几个文件可以设置环境变量 1./etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. ...

  4. 解决Ubuntu环境变量错误导致无法正常登录

    一.问题产生 配置JDK时,按照搜索到的一篇文章中的做法,修改了/etc/profile文件里的内容.在原内容保持不变的基础上,大致添加了以下内容: export JAVA_HOME=.... exp ...

  5. ubuntu环境变量及其配置

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量.所以管理环境变量的文件也分为系统级和用户级的. ...

  6. 解决Ubuntu环境变量错误导致无法正常登录  (command 'xxx' is available in bin ls)

    一.问题产生 配置JDK时,按照搜索到的一篇文章中的做法,修改了/etc/profile文件里的内容.在原内容保持不变的基础上,大致添加了以下内容: export JAVA_HOME=.... exp ...

  7. ubuntu 环境变量PATH的修改

    sudo nano /etc/environment 环 境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的 She ...

  8. Ubuntu环境变量(.profile)加载顺序

    Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile   -->/etc/bash.bashrc   --> /etc/prof ...

  9. ubuntu环境变量

    在Ubuntu中有如下几个文件可以设置环境变量1./etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.2. ...

随机推荐

  1. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  2. 05.pathinfo的两种模式与模版和控制器之间的关系

    <?php function dump($data){ echo '<pre>'; var_dump($data); echo '</pre>'; } dump($_SE ...

  3. rtp的封包与拆包h264

    请看文档rfc3984 1.看h264的帧 SPS序列參数帧 00 00 00 01 67 64 . . .. PPS图像參数帧 00 00 00 01 68 EE... . I帧 00 00 00 ...

  4. win7重新安装win7

    本方法适用于原本Win7系统下安装,无需U盘,非Ghost,简单几步操作之后与光盘安装过程一样,简便易操作,愿与和我一样有“洁癖”的朋友分享. 1.下载Win7原版光盘镜像,附下载地址: Win7旗舰 ...

  5. C++标准转换运算符const_cast

    前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述.C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymor ...

  6. XtraBackup原理3

    http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBa ...

  7. Jquery Validate根据其他元素的事件来触发单个元素的异步校验

    场景:在做一个车辆信息管理模块,而车牌是通过车牌颜色和车牌号码来确定唯一性的,录入车牌信息时需对车牌进行唯一性校验.

  8. mysql索引常见问题

    一:对于先建索引再插入和先插入再统一建索引效率: 对于大数量的表来说, 先加载数据再来定义全文索引的 速度要远远优于在一个已经定义好全文索引的表里面插入大量数据的速度.一定会问:这是问什么呢?其实,道 ...

  9. PHP读书笔记(6)- 数组

    数组定义 数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西.PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型. 定义数组 ...

  10. HDU 1043 Eight (A* + HASH + 康托展开)

    Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...