设置环境变量

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. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

    摘要      本文将对“MVC公告发布系统”的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法. 一个小难题      我们继续完善“MVC公告发布系统”, ...

  2. python报错Nonetype object is not iterable

    https://www.cnblogs.com/zhaijiahui/p/8391701.html 参考链接:http://blog.csdn.net/dataspark/article/detail ...

  3. 洛谷 P1497 木牛流马

    P1497 木牛流马 题目描述 孔明造出了木牛流马 木牛者,方腹曲头,一脚四足,头入领中,舌著于腹.载多而行少,宜可大用,不可小使:特行者数十里,群行者二十里也.曲者为牛头,双者为牛脚,横者为牛领,转 ...

  4. [Angular] Http Custom Headers and RequestOptions

    updatePassenger(passenger: Passenger): Observable<Passenger> { let headers = new Headers({ 'Co ...

  5. 三星Galaxy Tab S2上市,压制苹果之心凸显

        平板市场正在迎来史上最为关键的一次PK,众所周知,平板市场的苹果和三星一直是行业的领头羊,而在激烈的竞争中.三星平板似乎后劲更足.众多性能优异的产品频频推出.平板之王的称谓呼之欲出. 去年三星 ...

  6. 三个水杯(BFS)

    三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 给出三个水杯.大小不一,而且仅仅有最大的水杯的水是装满的,其余两个为空杯子. 三个水杯之间相互倒水,而且水杯 ...

  7. 11. Spring Boot JPA 连接数据库

    转自:https://blog.csdn.net/catoop/article/details/50508397

  8. Jmeter--性能测试工具的搭建

    第一步:Jmeter软件下载第二步:解压下载的Jmeter包到某一盘符下,最好解压到无中文字符目录下,防止乱码问题,以我电脑为例,比如:D:tools第三步:找到解压的文件jmeter.bat,一般在 ...

  9. unmapping error

    否则,会映射一个Getch的器件,就会报unmapping 的error

  10. POJ 3169 Layout (HDU 3592) 差分约束

    http://poj.org/problem?id=3169 http://acm.hdu.edu.cn/showproblem.php?pid=3592 题目大意: 一些母牛按序号排成一条直线.有两 ...