文档章节

理解Linux环境变量及配置文件执行顺序

roockee
 roockee
发布于 2015/12/16 16:47
字数 582
阅读 51
收藏 11

每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。

设置环境变量:$export NAME="HELLOWORLD"  (临时变量,重启系统将失效)

显示环境变量:$echo $NAME

env 命令查看当前用户的环境变量

 

如果要想把环境保存于系统,以便下次开机还能生效就必须配置到以下文件中:~/.bashrc;~/ .bash_profile,;~/.profile; /etc/profile;etc/bash.bashrc,那么他们之间有什么样的区别呢?

 

首先理解一下概念:

login shell:用户通过终端登录凭借用户名和密码登录控制台的动作是login shell,也就是说最终会调用login命令的操作都可称之为login shell。

non-login shell:用户在图形界面启动一个terminal,或者执行/bin/bash,/usr/bin/bash都属于non-login shell。

 

对于login shell读取文件的顺序是:

 

 

  1.   /etc/profile

  2. ~/.bash_profile

  3. ~/.bash_login

  4. ~/.profile

/etc/profile 是必须要执行的,然后后面3个,按照顺序谁存在就执行谁,然后后面的就不会再执行。其逻辑可用代码表示为:

 

Java代码  收藏代码

  1. execute /etc/profile  

  2. IF ~/.bash_profile exists THEN  

  3.     execute ~/.bash_profile  

  4. ELSE  

  5.     IF ~/.bash_login exist THEN  

  6.         execute ~/.bash_login  

  7.     ELSE  

  8.         IF ~/.profile exist THEN  

  9.             execute ~/.profile  

  10.         END IF  

  11.     END IF  

  12. END IF  

 

 退出交互控制台,执行的文件是:

 

Java代码  收藏代码

  1. IF ~/.bash_logout exists THEN  

  2.     execute ~/.bash_logout  

  3. END IF  

 

 对于~/.bashrc,是在non login shell 启动时执行,也就意味着在图形界面每开启一次terminal,就会读取一次该文件

 

Java代码  收藏代码

  1. IF ~/.bashrc exists THEN  

  2.     execute ~/.bashrc  

  3. END IF  

 

 

在很多Redhad发行版中和Ubuntu发行版中,如果.bashrc存在于home目录,它将从.bash_profile或.profile中运行,。可能是有以下代码

# Run .bashrc if it exists

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

 

了解他们的执行顺序后,就知道环境变量该怎么放了。笔者将Java的环境变量都配置于~/.profile中。

 

另:/etc/environment是整个系统的环境,而/etc/profile是所有用户的环境,前者启动系统后就会去读取该文件,后者只有在用户登录的时候才去读取


本文转载自:

共有 人打赏支持
roockee
粉丝 4
博文 61
码字总数 4693
作品 0
南京
高级程序员
细数 Linux 的 /etc/profile、~/.bash_profile 等执行过程以及作用

在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bashprofile、 ~/.bashlogin或 ~/.profile文件中的其中一个, 执行的顺序为...

Zoker
2014/02/14
0
1
.bash_profile和.bashrc的什么区别及启动过程

在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bashprofile、 ~/.bashlogin或 ~/.profile文件中的其中一个, 执行的顺序为...

DD2086
2011/05/24
0
0
Tomcat 自启动环境参数的设置及 Linux 脚本的启动顺序

问题描述: 最近 在做Tomcat优化(Tomcat 字符编码,Apr & Tomcat-Native安装) 时,遇到一个自启动环境参数的问题。 本次优化需要设置: export LCALL=enUS.UTF-8 export LDLIBRARYPATH=$LD...

从前
2012/10/23
0
0
linux profile 和environment 区别

先将export LANG=zhCN加入/etc/profile ,退出系统重新登录,登录提示显示英文。将/etc/profile 中的export LANG=zhCN删除,将LNAG=zhCN加入/etc/environment,退出系统重新登录,登录提示显示...

Silencer
2012/08/28
0
0
linux下系统启动时,几个配置文件 启动顺序

在登录Linux时要执行文件的过程如下: 在刚登录Linux时, 首先启动 /etc/profile 文件, 然后再启动用户目录下的 ~/.bashprofile、 ~/.bashlogin或 ~/.profile文件中的其中一个,用户主目录下...

Oscarfff
2015/12/20
95
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
16分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
20分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
20分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
27分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部