设置环境变量

profile和bashrc文件

/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件。此文件为系统的每一个用户设置环境信息,当用户第一次登录时,该文件被运行。

并从/etc/profile.d文件夹的配置文件里搜集shell的设置。

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

~/.bash_profile:每一个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件只运行一次!默认情况下,他设置一些环境变量,运行用户的.bashrc文件.每一个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件只运行一次!默认情况下,他设置一些环境变量,运行用户的.bashrc文件.

~/.bashrc:该文件包括专用于你的bash shell的bash信息。当登录时以及每次打开新的shell时,该该文件被读取。

~/.profile:在登录时用到的第三个文件。profile文件,每一个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件只运行一次!默认情况下。他设置一些环境变量,运行用户的.bashrc文件。

/etc/bashrc:为每个执行bash shell的用户执行此文件。当bash shell被打开时。该文件被读取。

差别:改动/etc下的配置文件对全部用户均生效。须要root权限,而改动~(也就是$HOME)下的隐藏文件。bash_profile和.bash_rc仅对当前用户有效。他们的差别起始就是windows系统变量和用户变量的差别

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2F0aWVtZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

profile和bashrc文件的差别

要搞清bashrc与profile的差别,首先要弄明确什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。

交互式模式就是shell等待你的输入,而且运行你提交的命令。这样的模式被称作交互式是由于shell与用户进行交互。

这样的模式也是大多数用户很熟悉的:登录、运行一些命令、签退。当你签退后,shell也终止了。

shell也能够执行在第二种模式:非交互式模式。在这样的模式下,shell不与你进行交互,而是读取存放在文件里的命令,而且执行它们。当它读到文件的结尾,shell也就终止了。

bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。系统中存在很多bashrc和profile文件,以下逐一介绍:

举例来说。export脚本最好放在profile下,而alias的变量最好放在bashrc下

在bash配置文件里加入环境变量

C_INCLUDE_PATH(for C header files)和CPLUS_INCLUDE_PATH(for C++ header files)的环境变量是指明头文件的搜索路径,此两个环境变量指明的头文件会在-I指定路径之后,系统默认路径之前进行搜索。

LIBRARY_PATH指明库搜索路径。此环境变量指明路径会在-L指定路径之后,系统默认路径之前被搜索, 环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,比如,指定gcc编译须要用到的动态链接库的文件夹。

LD_LIBRARY_PATH环境变量用于在程序载入执行期间查找动态链接库时指定除了系统默认路径之外的其它路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。

bashrc和profile运行的时机和顺序

bash首先运行/etc/profile脚本,/etc/profile脚本先依次运行/etc/profile.d/*.sh

随后bash会运行用户主文件夹下的.bash_profile脚本,.bash_profile脚本会运行用户主文件夹下的.bashrc脚本,

而.bashrc脚本会运行/etc/bashrc脚本,可见假设系统文件和用户文件同一时候改动了一个系统变量,那么用户的配置会覆盖系统的配置。由于用户的配置文件总是后运行



至此,全部的环境变量和初始化设定都已经载入完毕.

bash随后调用terminfo和inputrc,完毕终端属性和键盘映射的设定.



当中PATH这个变量特殊说明一下:

假设是超级用户登录,在没有运行/etc/profile之前,PATH已经设定了以下的路径:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

假设是普通用户,PATH在/etc/profile运行之前设定了下面的路径:

/usr/local/bin:/bin:/usr/bin



这里要注意的是:在用户切换并载入变量,比如su -,这时,假设用户自己切换自己,比方root用户再用su -root切换的话,载入的PATH和上面的不一样.

准确的说。是不总是一样.所以。在/etc/profile脚本中。做了例如以下的配置:

if [ "$EUID" = "0" ]; then

    pathmunge /sbin

    pathmunge /usr/sbin

    pathmunge /usr/local/sbin

else

    pathmunge /usr/local/sbin after

    pathmunge /usr/sbin after

    pathmunge /sbin after

fi



假设是超级用户登录,在/etc/profile.d/krb5.sh脚本中,在PATH变量搜索路径的最前面添加/usr/kerberos/sbin:/usr/kerberos/bin

假设是普通用户登录,在/etc/profile.d/krb5.sh脚本中,在PATH变量搜索路径的最前面添加/usr/kerberos/bin



在/etc/profile脚本中,会在PATH变量的最后添加/usr/X11R6/bin文件夹

在$HOME/.bash_profile中,会在PATH变量的最后添加$HOME/bin文件夹



以root用户为例,终于的PATH会是这样(没有其他自己定义的基础上)

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin



以gatieme用户(普通用户)为例

/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/alice/bin

使环境变量生效

有上面运行运行时机我们发现。linux下的环境变量总会在用户下次登录或者登入shell时生效。可是我们也能够使用source命令强制载入配置文件,可是须要注意的是source命令仅仅对当前shell(终端有效),终端关闭后,source就失效了。要么又一次source要么注销。所以建立大家改动完以后注销一下

Linux环境变量具体解释的更多相关文章

  1. 三种配置linux环境变量的方法(以java为例)

    1.先确认是否为openjdk:参考 2. 修改/etc/profile文件  如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性 ...

  2. linux环境变量LD_LIBRARY_PATH

    LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径 ...

  3. Linux 环境变量和source命令 (转)

    可能是班门弄斧了,仅share给尚不知道的童鞋. 1.       问题的来源: 为什么我们编译Android代码时,需要输入:  source ./build/envsetup.sh  或者 . . ...

  4. Ubuntu Linux 环境变量

    2011年09月17日 Ubuntu 下设置adb环境变量 分类: 同Windows一样,Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用 ...

  5. 设置Linux环境变量的方法与区别(Ubuntu)

      设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别.   通过文件设置 Linux 环境变量 首先是设置全局环境变量, ...

  6. Linux环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  7. 设置Linux环境变量的方法和区别_Ubuntu

    设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...

  8. Linux 环境变量_006

    ***Linux 环境变量指系统运行程序或命令的能快速找到其位置等其它功能,不用输入复杂命令.以$PATH环境变量为例子, $PATH决定了shell指定寻找命令或程序的路径,比较执行ls命令,如果没 ...

  9. Linux学习笔记之Linux环境变量总结

    0x00 概述 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量. 0x01 Linux环境变量分类 按照生命周期来分,Lin ...

随机推荐

  1. powerdesigner逆向自动生成mysql说明文档、PDM

    做EDI的项目的时候,用到相关工具powerdesigner,正好我们的一个项目对数据设计阶段时相关文档没有很好的保存下来,查找了一下powderdesigner相关文档,采用逆向工程,从mysql数 ...

  2. silverlight依据json字符串动态创建实体类

    1.接收json字符串: //用JsonValue转换json字符串是为了之后获得json字符串的每行数据和每一列的列名 JsonValue jv = JsonValue.Parse(json);   ...

  3. PHPki

    PHPki PHPki是一个基于开放源码Web的应用程序,用来管理遵守HIPAA的多代理"公钥基础结构".它可以用于创建X.509数字证书,并主要为支持S/MIME的电子邮件客户端 ...

  4. LinearLayout-layout_gravity 属性没有效果分析

    今天在一个布局文件中,遇到了一个问题,先看代码 <LinearLayout android:layout_width="match_parent" android:layou ...

  5. 程序是怎么跑起来的? —— CPU 是什么?C/C++程序的运行

    1. 概念初步 程序:计算机的程序,和做饭.运动会的程序一样,指的是"做事的先后次序": 程序的组成:程序是指令(及物动词)和数据(宾语)的组合体: C 语言 printf(&qu ...

  6. HTML基础第五讲---控制表格及其表项的对齐方式

    转自:https://i.cnblogs.com/posts?categoryid=1121494 缺省情况下,表格在浏览器屏幕上左对齐,你可以使用<TABLE>的ALIGN属性来指定表格 ...

  7. 右键菜单→新建→BAT 批处理文件

    目的:以前编写BAT,通常新建一个文本,然后另存为 .bat,比较麻烦,那么如何右键新建菜单里添加新建批处理文件呢? 代码如下: @echo offcd /d %temp%echo Windows R ...

  8. 当鼠标聚焦时输入框变色(focus事件实例)

    当鼠标聚焦时输入框变色css相关,鼠标点击<input>输入域后出现有颜色的边框原理:css伪类之input输入框鼠标点击边框变色效果伪类元素的使用::focus 一:当输入框获得焦点时, ...

  9. CodeVs——T 3305 水果姐逛水果街Ⅱ

    http://codevs.cn/problem/3305/  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 De ...

  10. mahout測试朴素贝叶斯分类样例

    对于这个測试建议大家先理解原理,这里我画了例如以下的示意图 接下来就依照例如以下的细节来输入指令測试: 首先前提是Hadoop安装并启动,mahout已经安装了. <strong>< ...