理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。

本文主要是介绍理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  • 博客分类: 
  • Linux

 

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

设置环境变量:$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是所有用户的环境,前者启动系统后就会去读取该文件,后者只有在用户登录的时候才去读取

这篇关于理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086877

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT