文档章节

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

roockee
 roockee
发布于 2015/12/16 16:47
字数 582
阅读 51
收藏 11
点赞 0
评论 0

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

设置环境变量:$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
博文 59
码字总数 3182
作品 0
南京
高级程序员
.bash_profile和.bashrc的什么区别及启动过程

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

DD2086
2011/05/24
0
0
细数 Linux 的 /etc/profile、~/.bash_profile 等执行过程以及作用

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

Zoker
2014/02/14
0
1
Tomcat 自启动环境参数的设置及 Linux 脚本的启动顺序

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

从前
2012/10/23
0
0
Linux之/etc/profile文件

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

秋风醉了
2014/03/28
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
Ubuntu下设置adb环境变量

我的adb已经拷贝到ubuntu下了,但是还没有配置环境变量,那么只能在那个文件夹下使用,所以: $gedit .bashrc 最后一行添加了 export PATH=$PATH:/home/username/platform-tools 保存退出 $s...

雨焰
2012/11/09
0
0
【转】Linux下搭建Tomcat服务器

对于apache开源项目中tomcat的认识,大多停留在windows下,这次我通过一个简单的实例来介绍一下在linux下如何搭建tomcat环境,并且部署一个web项目。 先从基本安装开始,可别小看linux下的文...

段成诚
2011/08/18
0
0
/etc/profile和~/.bash_profile的区别与联系

/etc/profile 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。英文描述:”System wide envir...

JavaEdge
06/15
0
0
linux-crontab之环境变量的问题

  前言      在linux服务器上,计划任务基本都是crontab进行管理的。但是有些脚本手动运行都很正常,一放到crontab里面就不执行了。这一般都是环境变量的问题引起的。      环境变...

linux运维菜
06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring+jpa NotransactionalEntityManageravailable

TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务i......

wpfc
刚刚
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
2分钟前
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
5分钟前
0
0
[MicroPython]TPYBoard智能小车“飞奔的TPYBoard装甲一号”

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具...

bodasisiter
7分钟前
0
0
桌面虚拟化VDI(Virtual Desktop Infrastructure)

为了保证员工(客户)不把公司的资料复制、传输给别人。可以把员工平时办公放在服务器上做。所以使用桌面虚拟化。就是把一个服务器虚拟出很多桌面系统(如:windows)。 桌面虚拟化最大的优势...

王坤charlie
14分钟前
2
0
自我审视及职业规划

啊哈,不知不觉已经工作了3年了。程序员作为一门技术工作,如果分级的话我的能力如何呢?该怎么提升呢? 话说,我现在的能力属于中低级的层次吧,努力在向高级努力。为什么这么说呢: 因为我觉...

一口今心
16分钟前
1
0
《PHP和MySQL Web 开发》 第12章 MySQL高级管理

我决定好好写学习笔记了,对应上书上的目录和重要信息。不瞎jb写了。从这章开始吧,然后之前写的会编辑后重发。嗯,就酱。 12.1 深入理解权限系统 妈蛋 开头就卡住了。。。我先回去修改之前的...

十万猛虎下画山
17分钟前
1
0
Python 3.6:多态的实现

多态的作用不用多说,C++用如下条件来实现多态: 要有继承 要有虚函数函数重写 要有父类指针(父类引用)指向子类对象 实际上C++使用VPTR指针来完成这个事情,其是设计模式的基础,软件分层的基...

全部原谅
17分钟前
0
0
纯Python实现鸢尾属植物数据集神经网络模型[图]

纯Python实现鸢尾属植物数据集神经网络模型[图]: 尝试使用过各大公司推出的植物识别APP吗?比如微软识花、花伴侣等这些APP。当你看到一朵不知道学名的花时,只需要打开植物识别APP,拍摄一张...

原创小博客
20分钟前
1
0
2018安卓巴士开发者大会打造Android技术盛宴

2018安卓巴士开发者大会打造Android技术盛宴2018安卓巴士开发者大会将于8月25日在上海举行,作为中国最具前沿性、专业性的安卓技术会议,将邀请来自爱奇艺、阿里、饿了么等知名企业的一线工程...

逆鳞龙
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部