参考:Linux公社Ubuntu系统环境变量详解

UNIX/Linux系统中的环境变量和库文件的使用方法

由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,因此我们需要了解每一个环境变量的作用。

一、Ubuntu Linux系统环境变量配置文件

Ubuntu系统环境变量包括两种:系统级文件和用户级文件。

1.1 系统级文件

/etc/profile:在登陆时,操作系统定制用户环境时使用的第一个文件,该文件为系统的所有用户设置环境信息,一般是通过调用/etc/bash.bashrc文件;

/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件,但用户执行bash shell时,该文件被执行;

/etc/environment:在登陆时,操作系统使用的第二个文件,系统读取某个用户的~/profile前,设置环境文件的环境变量;

1.2 用户级文件

~/.profile:在登陆时,用到的第三个文件,每个用户都可使用该文件输入专用于自己使用的shell信息,如javac,qmake等,当用户登陆时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行自己的~/.bashrc

~/bashrc:该文件包含专用于你的bash shell的bash信息,当登陆以及每次打开新的shell时,该文件都会被读取。因此不推荐把shell放置此位置,因为每打开一个shell,这个文件就会被读取一次,效率上讲不好。

~/.bash_profile:单用户专用,登陆时仅执行一次,默认设置环境变量,执行~/.bashrc。是以login方式进入bash运行的。而~/.bashrc是以non-login方式进入bash运行的。

~/.bash_login:登陆shell启动时会被读取。也还是login方式进行bash运行。

~/.bash_logout:是以logout方式进行,即退出bash shell时,执行此文件。

~/.pam_environment:用户级的环境变量设置文件。

另外,/etc/profile中设定的变量(全局)作用于任何用户,而~/.bashrc等中设定的变量只能继承/etc/profile的变量和当前用户下的~/.bashrc的变量。

二、/etc/profile/etc/environment的比较

登陆系统时shell读取的顺序应该是:

/etc/profile -> /etc/environment -> $HOME/.profile -> $HOME/.env

推出系统时,执行shell的顺序为:

/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ./bashrc -> ``

/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。

系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,比如日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。

三、设置环境变量的方法

3.1 控制台中:(暂时性)

$PATH="$PATH:/my_new_path"

3.2 修改profile文件

sudo gedit /etc/profile或者sudo gedit ~/.profile

最底行加入:

export PATH="PATH:/mt_new_path"

3.3 修改.bashrc文件

sudo gedit /root/.bashrc或者sudo gedit ~/.bashrc

在里面加入:

export PATH="$PATH:/my_new_path"

第二、三种方法中/etc下的配置,需要重启系统才能生效。

用户目录下,使用source激活环境变量,例如,source ~/.bashrc

四、小结

在Ubuntu系统中/etc/profile文件是全局的环境变量配置文件,它适应于所有的shell。在我们登陆Linux系统时,首先启动/etc/profile文件,然后再启动用户目录下的~/.bash_profile~/.bash_login~/.profile文件中的其中一个,执行的顺序和上面的排序一样。如果~/.bash_profile文件存在的话,一般还会执行~/.bashrc文件。

4、Ubuntu系统环境变量详解的更多相关文章

  1. Maya 常用环境变量详解

    Maya 常用环境变量详解 前言: Maya 的环境变量让用户可以很方便的自定义 Maya 的功能. 在 Maya 的 Help 帮助文档中有专门的一个章节< Environment Varia ...

  2. mysql show variables系统变量详解

    mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选 ...

  3. ubuntu apache2配置详解(含虚拟主机配置方法)

    ubuntu apache2配置详解(含虚拟主机配置方法) 在Windows下,Apache的配置文件通常只有一个,就是httpd.conf.但我在Ubuntu Linux上用apt-get inst ...

  4. 基于集合成工控机Ubuntu系统安装分区详解

    基于集合成工控机Ubuntu系统安装分区详解 硬件描述:双核的CPU,128G的固态硬盘 软件描述:使用Ubuntu12.04系统,内核3.8.0-29版本,QT4.8.1版本 1.新建分区表 /de ...

  5. net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解

    asp.net core环境变量详解   环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...

  6. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  7. asp.net core环境变量详解

    环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的环境变量在其它文件里面,不多说了,有兴趣的 ...

  8. Nginx基础篇(2)- Nginx基本配置文件和变量详解

    Nginx基本配置文件和变量详解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. ...

  9. 如何查找YUM安装的JAVA_HOME环境变量详解

    如何查找YUM安装的JAVA_HOME环境变量详解  更新时间:2017年10月27日 09:44:56   作者:铁锚   我要评论 这篇文章主要给大家介绍了关于如何查找YUM安装的JAVA_HOM ...

随机推荐

  1. 集训DAYn——拉格朗日插值法

    看zzq大佬的博客,看到了这个看似很深奥的东西,实际很简单(反正比FFT简单,我是一个要被FFT整疯了的孩子) 拉格朗日插值法 是什么 可以找到一个多项式,其恰好在各个观测点取到观测到的值.这样的多项 ...

  2. php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.

    有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...

  3. Pollard Rho大质数分解学习笔记

    目录 问题 流程 代码 生日悖论 end 问题 给定n,要求对n质因数分解 普通的试除法已经不能应用于大整数了,我们需要更快的算法 流程 大概就是找出\(n=c*d\) 如果\(c\)是素数,结束,不 ...

  4. SpringBoot cookie工具类

    code: import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.annot ...

  5. Spring与MyBatis面试

    Spring: https://www.cnblogs.com/wang-meng/p/5701982.html https://www.cnblogs.com/liangyihui/p/591777 ...

  6. Shiro学习笔记四(Shiro集成WEB)

    这两天由于家里出了点事情,没有准时的进行学习.今天补上之前的笔记 -----没有学不会的技术,只有不停找借口的人 学习到的知识点: 1.Shiro 集成WEB 2.基于角色的权限控制 3.基于权限的控 ...

  7. 第一章(欢迎进入node.js世界)

    本章内容 1:Node.js是什么 2:服务器端javascript 3:node的异步和事件触发本质 4:node为谁而生 5:node程序示例 1.1 node.js他的首次亮相是在2009年,非 ...

  8. 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解

    转载自:https://blog.csdn.net/tantexian/article/details/48196453 SOA: 维基百科解释:SOA:面向服务的软件架构(Service Orien ...

  9. 轮播图(jQuery)

    效果图: -----------------------------------------html------------------------------------------------- ...

  10. C# winform窗体间传值(使用委托或事件)

    窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...