`
lantian_123
  • 浏览: 1359854 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

理解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个,按照顺序谁存在就执行谁,然后后面的就不会再执行。其逻辑可用代码表示为:

 

execute /etc/profile
IF ~/.bash_profile exists THEN
    execute ~/.bash_profile
ELSE
    IF ~/.bash_login exist THEN
        execute ~/.bash_login
    ELSE
        IF ~/.profile exist THEN
            execute ~/.profile
        END IF
    END IF
END IF

 

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

 

IF ~/.bash_logout exists THEN
    execute ~/.bash_logout
END IF

 

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

 

IF ~/.bashrc exists THEN
    execute ~/.bashrc
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-Shell基础视频教程

    10.3.1 Shell基础-Bash基本功能-历史命令与补全.mp4 10.3.2 Shell基础-Bash基本功能-别名与快捷键.mp4 10.3.3 Shell基础-Bash基本功能-输入输出...10.6.3 Shell基础-环境变量配置文件-其他配置文件和登录信息.mp4

    Oracle 主要配置文件介绍

    export NLS_LANG=AMERICAN.ZHS16CGB231280 & 说明 1 配置上述环境变量要注意定义的先后顺序 如 定义 ORACLE_HOME 时 用 到 了 ORACLE_BASE 那 么 ORACLE_HOME 的 定 义 应 该 在 ORACLE_BASE之后...

    嵌入式Linux应用程序开发标准教程(第2版全)

    《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。...

    嵌入式Linux C编程入门(第2版) PPT

    2.1.3 嵌入式linux c语言编程环境 34 2.2 嵌入式linux编辑器vi的使用 35 2.2.1 vi的基本模式 35 2.2.2 vi的基本操作 36 2.2.3 vi的使用实例分析 40 2.3 嵌入式linux编译器gcc的使用 41 2.3.1 gcc...

    嵌入式Linux应用程序开发详解

    1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结 17 思考与练习 18 第2章 Linux...

    linux_c API函数大全

    execlp(从PATH 环境变量中查找文件并执行) 102 11.4 102 execv(执行文件) 102 11.5 103 execve(执行文件) 103 11.6 104 execvp(执行文件) 104 11.7 104 exit(正常结束进程) 104 11.8 104 _exit(结束进程...

    CentOS.5系统管理-part1

    10.1.2 直接修改配置文件配置以太网 10.1.3 设置本地主机名 10.1.4 设置DNS客户和本地主机解析 10.2 路由表和静态路由 10.2.1 Linux内核路由表 10.2.2 配置静态路由 10.3 网络测试方法和测试工具 10.3.1 网络测试的...

    ARM_Linux启动分析.pdf

    以上这些拷贝动作都是以bootsect.S、setup.S以及vmlinux在磁盘上连续存放为前提的,也就是说,我们的bzImage文件或者zImage文件是按照bootsect,setup, vmlinux这样的顺序组织,并存放于始于引导分区的首扇区的连续...

    nServer-v2.1023[FTP + MYSQL + HTTP + PHP(FCGI)]

    - 统一配置文件替换变量表,参看anrip/config.php,请注意修改站点配置 - MySQL数据、生成配置文件、模块临时文件均放入mydata目录,方便设置安全权限 2012年05月25日 - 配置文件放到到anrip/config目录 - 控制台...

    入门学习Linux常用必会60个命令实例详解doc/txt

    要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令...

    Linux的Login Shell & Non-Login shell

    登录脚本的执行顺序:【注:仅适用于 bash shell】 Login Shell ... 这种Login shell 执行脚本的顺序: 1. /etc/profile 【全局profile文件;... ~/.bash_profile 【搜索命令的路径 ——————- 登录级别 环境变量配

    Linux简明教程.rar

    9.按顺序显示文件内容 三、进程间通信命令--------------------------------------------------------------------------------- 四、一些重要指令-------------------------------------------------------------...

    传智播客扫地僧视频讲义源码

    18_配置文件读写案例_写和修改接口实现 19_文件加密案例_思路分析 20_文件加密案例_文件搬运实现 21_文件加密案例_文件加密功能集成 22_文件加密案例_文件加密实现 23_作业 24_学员二级指针代码bug调试_传智扫地僧 ...

    深入理解Android:卷I--详细书签版

    3.2.1 解析配置文件 38 3.2.2 解析service 42 3.2.3 init控制service 48 3.2.4 属性服务 52 3.3 本章小结 60 第4章 深入理解zygote 61 4.1 概述 62 4.2 zygote分析 62 4.2.1 AppRuntime分析 63 4.2.2 ...

    嵌入式课件

    9.4.4 Linux环境下的gdb程序调试 9.5 ARM汇编语言与C语言混合编程 9.5.1 基本的ATPCS 9.5.2 汇编程序中调用C程序 9.5.3 C程序中调用汇编程序 9.5.4 C程序中内嵌汇编语句 9.5.5 从汇编程序中访问C程序变量 思考题与...

    mysql-java8-tomcat8

    7\配置环境变量 vi /etc/profile JAVA_HOME=/usr/local/jdk CLASSPATH=$JAVA_HOME/lib:. PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH 8\让环境变量立刻生效 source /etc/profile 9\测试java...

    大名鼎鼎SWFUpload- Flash+JS 上传

    整个文件上传完成之后,下一个页面才会显示,并且不能对选择的文件做预设的文件检验,例如文件大小限制,文件类型限制。当文件上传时,用户获得的可用的反馈信息很少。 传统的HTML上传模式十分简单,线性的,几乎...

    Git权威指南PDF完整版

    26.2.1 Git 库配置文件的扩展及分支映射/ 387 26.2.2 Git工作分支和 Subversion 如何对应/ 388 26.2.3 其他辅助文件/ 390 26.3 多样的 git-svn 克隆模式/ 390 26.4 共享 git-svn 的克隆库/ 393 26.5 git-svn 的局限/...

Global site tag (gtag.js) - Google Analytics