环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。下面通过几个实例来说明。

1)etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
注:在这里我们设定是为所有用户可使用的全局变量。

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

3)~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
注:~在LINUX下面是代表HOME这个变量的。
另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或 ~/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如我用的是Ubuntu,我的用户文件夹下默认的就只有~/.profile文件。

4)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
(注:这个文件是 .开头的,所以在文件夹中被隐藏了)
那么我们如何添加自己定义的环境变量呢?
用记事本打开这个文件,然后在里面最后写上:
xiaokang=kangkang
然后保存,这样每次打开一个新的terminal的时候,我们这个变量就生效了。记住,如果你已经打开一个terminal,然后你修改了这个文件,那么在这个terminal下是不会生效的。一般情况用户最好在这里进行修改,但是有时候会覆盖父级的变量,比如PATH是ROOT设定的,但是如果你在这个文件里面写了PATH=xx,那么将来所有的PATH都成了xx了,所以我们应该在这个文件中写为:  
PATH=$PATH:xx
这样就把原来的和你自己的一起加上了。而且注意在LINUX系统下用:分割表示并列,而不是windo的;
3和4都是在用户目录下的,他们唯一的不同是: .bash_profile只能在登录的时候启动一次。在我的Ubuntu里面这个3文件似乎没有。

5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是/"父子/"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。

好的,总结一下他们的执行方式:
当你登录并且登录shell是bash时,bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~ /.bash_profile,~/.bash_login或~/.profile文件,并执行找到的第一个可读文件中的命令.当登录bash退出时,它 将执行~/.bash_logout文件中的命令.
当启动一个交互的bash时,它将执行~/.bashrc文件中的命令(如果该文件存在并且可读).当非交互地启动以运行一个shell脚本时,bash将查找bash_env环境变量,确定执行文件的名称.

Linux 中/etc/profile、~/.bash_profile 环境变量配置以及区别相关推荐

  1. linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法

    [感谢:http://www.codesec.net/view/459539.html] 如果在安装Anaconda的过程中没有将安装路径添加到系统环境变量中,需要在安装后手工添加: 1.在终端输入$ ...

  2. Node.js项目中动态加载环境变量配置

    NODE_MODULES:项目中动态加载环境变量配置 开始 在平时的 Node.js 项目开发中,我们需要在项目中添加各种各样的配置:服务端口.服务地址.图片上传.数据库.Redis 等等. 通常情况 ...

  3. Linux下运行第一个Java程序成功(Linux下JDK安装和环境变量配置等)

    要从本机拷贝一个jdk的linux安装包到虚拟机,看一下虚拟机上系统的IP: 此系统没有预先安装openJDK: 新建一个java目录,用于安装:需要切到root用户: 创建java目录: 使用工具连 ...

  4. linux中 export 用法及环境变量

    Linux export命令用于设置或显示环境变量. 在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量,供后续执行的程序使用. 一.语法如下: expor ...

  5. maven3.5.0在win10中的安装及环境变量配置

    1.maven的下载地址http://maven.apache.org/download.cgi.如下图,下载apache-maven-3.5.0-bin.zip 2.解压缩到自己指定的文件下,mav ...

  6. linux中的进程、环境变量和虚拟地址

    目录 冯诺依曼体系结构 操作系统 进程概念 程序和进程 什么是程序 什么是进程 查看进程信息 进程.进程标识符&进程状态 进程创建 僵尸状态和僵尸进程 孤儿进程 环境变量 定义 常见的环境变量 ...

  7. CentOS 7下设置Docker代理(Linux下Systemd服务的环境变量配置)

    Docker守护程序使用HTTP_PROXY,HTTPS_PROXY以及NO_PROXY环境变量在其启动环境来配置HTTP或HTTPS代理的行为.无法使用daemon.json文件配置这些环境变量. ...

  8. CentOS 7 /etc/profile、.bash_profile 环境变量配置,提示-bash: fing: command not found

    1.修改.bash_profile ,在~目录下 [root@ben~]# vim .bash_profile 如果是:PATH=$PATH:$HOME/bin则需要添加成如下: PATH=$PATH ...

  9. linux php和java环境变量配置_Linux设置PHP环境变量

    区分 环境变量从时间上可分为临时性和永久性,这里只说明永久性的设置 操作 PHP 安装目录 找到PHP的安装目录:我这里是/phpstudy/server/php 其bin目录为:/phpstudy/ ...

最新文章

  1. 开发工具之Android Studio快捷键
  2. C语言再学习 -- 关键字void
  3. Spring Boot之HelloWorld
  4. github开源大项目_GitHub刚刚发布了一份大规模的开源指南
  5. Java工作笔记-String转Integer可以转与不可以转的情况
  6. 在DLL Project中定义配置文件
  7. 阿里一面,说说你对zookeeper中ZAB协议的理解?
  8. c语言学习-判断一个年份是否闰年
  9. 基于JAVA+Servlet+JSP+MYSQL的酒店管理系统
  10. JAVA中的静态成员
  11. delphi const
  12. 花椒测试平台 - 接口篇
  13. 17229 Lry,你除了2还是2[C]
  14. 沙箱-简单实现支付宝网页支付功能
  15. 2018-2-13-windows-10预览版升级win10-7月29-10240.16384
  16. 【Romance of the Three Kingdoms】
  17. 【Codeforces 1392F】Omkar and Landslide | 思维、结论
  18. Exploring Word Vextors
  19. 实践干货!猿题库 iOS 客户端架构设计
  20. OLA音频变速算法的仿真与剖析

热门文章

  1. Python小白的数学建模课-B3. 新冠疫情 SIS模型
  2. Python数模笔记-Sklearn (1)介绍
  3. 有oracle操作系统,Oracle操作系统认证方式
  4. opencv threshold_基于深度学习OpenCV与python进行字符识别
  5. Mybatis generator(复制粘贴完成)
  6. Docker-容器数据卷
  7. HashMap和Hashtable 线程安全性
  8. 谷歌搜索技巧:搜索语法+隐藏彩蛋+高级设置
  9. php之快速入门学习-9(switch)
  10. Python自动化之列表