设置环境变量

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. Servlet 规范笔记—基于http协议的servlet

    在上一章节,我们大概的描述了servlet的规范以及servlet和servlet容器的概念和用途,我们清楚的知道servlet容器提供了接收来自client端的请求,然后根据请求进行处理(如:执行对 ...

  2. word2vec源代码解析之word2vec.c

    word2vec源代码解析之word2vec.c 近期研究了一下google的开源项目word2vector,http://code.google.com/p/word2vec/. 事实上这玩意算是神 ...

  3. java解压多目录Zip文件(解决中文乱码问题)--转载

    原文地址:http://zhangyongbo.iteye.com/blog/1749439 import java.io.BufferedOutputStream; import java.io.F ...

  4. SD卡与tf卡引脚转换

    https://www.cnblogs.com/shangdawei/p/3255414.html

  5. JSON序列化和解析

    1.JSON.stringfy()用于将 JavaScript 值转换为 JSON 字符串 2.JSON.parse()用于将一个 JSON 字符串转换为 JavaScript 对象. 3.JSON. ...

  6. hibernate hbm.xml配置映射

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. MES制造系统

    给大家介绍一个非常不错的MES专业产品网站,http://www.OrBitMES.com 上面分为初.中.高各级的难得的MES产品学习资料下载, http://www.orbitmes.com/Pr ...

  8. Android Warning not all local changes may be shown due to an error

    idea使用svn出现Warning not all local changes may be shown due to an error,如下图所示: 解决方案: 1.File > Setti ...

  9. 怎样用Adobe Acrobat 7 Pro把PDF文档拆分成多个啊?

    这个pdf文档里有多篇文章,我想把他们分开并分别保存在独立的pdf文档.怎么操作?我的电脑基础不太好,麻烦说得详细一些. Adobe Acrobat 7 Pro拆分PDF文档的方法: 1.点左边的“书 ...

  10. EularProject 41:最长的n位Pandigital素数问题

    Pandigital prime Problem 41 We shall say that an n-digit number is pandigital if it makes use of all ...