linux 加载环境变量_linux module加载环境变量 - CSDN
精华内容
参与话题
  • 一、系统环境变量: /etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等等。从安全角度考虑,通常不会在此文件中进行环境变量。/etc/profile文件...

    一、系统环境变量:

    系统环境变量相关文件包括:/etc/profile 、 /etc/profile.d/*.sh 、 /etc/bashrc
    (1)/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等等。从安全角度考虑,通常不会在此文件中进行环境变量设置。
    /etc/profile文件中有执行/etc/profile.d目录下脚本的代码,因此一般在/etc/profile.d目录下,通过shell脚本,设置系统环境变量:

    for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
        if [ -r "$i" ]; then
            if [ "${-#*i}" != "$-" ]; then
                . "$i"
            else
                . "$i" >/dev/null
            fi
        fi
    done
    
    

    (2)/etc/profile/*.sh:设置系统环境变量,如my_env.sh

    # JAVA_HOME
    JAVA_HOME=/opt/module/jdk1.8.0_212
    #HADOOP_HOME
    HADOOP_HOME=/opt/module/hadoop-3.1.3
    #ZOOKEEPER_HOME
    ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
    #KAFKA_HOME
    KAFKA_HOME=/opt/module/kafka
    
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin
    export PATH JAVA_HOME HADOOP_HOME ZOOKEEPER_HOME KAFKA_HOME
    

    (3)/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如 [root@localhost ~]#,当bash shell被打开时,该文件被读取。改文件读取时,会执行/etc/profile.d/*.sh脚本

        for i in /etc/profile.d/*.sh; do
            if [ -r "$i" ]; then
                if [ "$PS1" ]; then
                    . "$i"
                else
                    . "$i" >/dev/null
                fi
            fi
        done
    
    

    二、用户环境变量:

    用户环境变量相关文件包括:~/.bash_profile 、 ~/.bashrc 、 ~/.bash_history 、 ~/.bash_logout
    (1).bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。(在这个文件中有执行.bashrc的脚本)

    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    

    (2).bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。此外,在用户目录下的.bashrc有执行/etc/bashrc的脚本。

    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    
    

    (3).bash_history :记录命令历史用的。
    (4).bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。

    三、启动过程
    (1)正常登录配置文件顺序加载过程,所谓正常登录指用户通过输入用户名和密码登录的状态(包括ssh登录)。

    在这里插入图片描述
    ssh远程账户密码登录:

    [jl@hadoop103 ~]$ ssh hadoop102
    Last login: Sun May 17 08:25:39 2020 from 192.168.238.1
    /etc/profile start
    /etc/profile.d/my_env start
    /etc/profile.d/my_env end
    /etc/profile end
    ~/.bash_profile start
    ~/.bashrc start
    /etc/bashrc start
    /etc/bashrc end
    ~/.bashrc end
    ~/.bash_profile end
    

    (2)非登录式文件加载过程,如执行/bin/bash和su切换用户

    在这里插入图片描述
    执行/bin/bash:

    [jl@hadoop102 ~]$ /bin/bash
    ~/.bashrc start
    /etc/bashrc start
    /etc/profile.d/my_env start
    /etc/profile.d/my_env end
    /etc/bashrc end
    ~/.bashrc end
    
    

    执行su切换用户:

    [root@hadoop102 jl]# su jl
    ~/.bashrc start
    /etc/bashrc start
    /etc/profile.d/my_env start
    /etc/profile.d/my_env end
    /etc/bashrc end
    ~/.bashrc end
    
    
    展开全文
  • linux 加载环境变量

    千次阅读 2013-12-11 10:03:08
    1 +++++在主目录下添加环境变量的路径++++ 方法一: 1>在主目录下vi .profile 2>添加要添加的环境变量的路径 如: 3> 设置完成后还要source 一下; 4> 执行source ~/.profile 方法二: ...
    1 +++++在主目录下添加环境变量的路径++++

    方法一:
    1>在主目录下vi .profile
    2>添加要添加的环境变量的路径 如:

    3> 设置完成后还要source 一下;
    4> 执行source   ~/.profile


    方法二:
    1>在主目录下vi ~/.bashrc
    2>添加要添加的环境变量的路径 如:
    3> 执行source   ~/.bashrc


    注意:用这两种方法的好处就是可以在自己用户创建环境变量不影响其他的用户。

    2 +++++在根目录下添加环境变量的路径++++

    方法一:
    1>在根目录下vi /etc/profile
    2>添加要添加的环境变量的路径 如:

    3> 执行source   /etc/profile

    方法二:

    1>在根目录下vi /etc/bash.bashrc
    2>添加要添加的环境变量的路径 如:
    PATH=$PATH:/home/xyz/wcc/android-ndk-rc
    3> 执行source   /etc/bash.bashrc

    注意:用这种两种方法加载的环境变量会使所有用户的环境变量都改变,会牵涉其他用户的环境变量。

    *****最用加载环境变量后用echo $PATH  查看自己加载的环境变量是否存在。
    展开全文
  • 前言: 1. 环境变量是操作系统环境设置的变量,适用于整个系统的用户进程; 2. 环境变量可以在命令中设置,但是用户注销的时候将会丢失这些设置值;...Linux环境变量包括系统级和用户级,系统级的环境变量是每

    前言

    1. 环境变量是操作系统环境设置的变量,适用于整个系统的用户进程;

    2. 环境变量可以在命令中设置,但是用户注销的时候将会丢失这些设置值;

    3. 若要重复适用,则最好在.profile中定义;环境变量的使用与本地变量的使用方法相同,

    4. 但是在使用之前,必须用export命令导出。


    一、环境变量文件介绍  

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量,所以管理环境变量的文件也分为系统级和用户级的。

    二、Linux的变量种类

    按变量的生存周期来划分,Linux变量可分为两类:

    1.永久的:需要修改配置文件,变量永久生效

    2.临时的:使用export命令声明即可,变量在关闭shell时失效

    三、Linux 环境变量文件

    linux变量文件有/etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc, 以及~/.bash_profile(一般是用户在自己目录下新建的),~/.bash_logout.

    系统级:

    1./etc/environment:是系统在登录时读取的第一个文件,该文件设置的是整个系统的环境,只要启动系统就会读取该文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可

    2./etc/profile:此文件是系统登录时执行的第二个文件。 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。(/etc/profile可以用于设定针对全系统所有用户的环境变量,环境变量周期是永久性)

    3. /etc/bashrc:是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。(即每次新开一个终端,都会执行/etc/bashrc)。

    用户级(这些文件处于家目录下):

    1. ~/.profile:对应当前登录用户的profile文件,用于定制当前用户的个人工作环境(变量是永久性),每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方

    2.~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。(~/.bashrc只针对当前用户,变量的生命周期是永久的)

    不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。

    3.~/.bash_profile or ~./bash_login:~/.bash_profile是交互式login 方式进入 bash 运行的,~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。(如果~/目录下没有.bash_profile则新建立一个)这里是推荐放置个人设置的地方

    当一个shell关闭时,在bash_profile中定义的系统变量则会失效。因此,每打开一个新的shell时都要运行一次source bash_profile.而且针对当前用户。

    4.~/.pam_environment:用户级的环境变量设置文件,没有做测试,不知道管不管用。

    5.~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

    四、Linux 环境变量文件执行顺序

    1. 在登录Linux时要执行文件的过程如下:

    在刚登录Linux时,

    首先启动 /etc/profile 文件,

    然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,用户主目录下文件的执行的顺序为:

              ~/.bash_profile -> ~/.bash_login -> ~/.profile。

      

    如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

    因为在 ~/.bash_profile文件中一般会有下面的代码:

    if [ -f ~/.bashrc ] ; then
       . ./bashrc
    fi

    ~/.bashrc中,一般还会有以下代码:

    if [ -f /etc/bashrc ] ; then
       . /etc/bashrc
    fi

    所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。

    执行顺序为: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

    /etc/profile和/etc/environment等各种环境变量设置文件的用处

    1)先将export LANG=zh_CN加入/etc/profile,退出系统重新登录,登录提示显示英文。

    2)先将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。

    用户环境建立的过程中总是先执行/etc/profile,然后再读取/etc/environment。

    为什么会有如上所叙的不同呢?而不是先执行/etc/environment,后执行/etc/profile呢?

    这是因为: /etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。

    系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,如日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。

    对于用户的shell初始化而言是先执行/etc/profile,再读取文件/etc/environment;对整个系统而言是先执行/etc/environment。这样理解正确吗?

    登陆系统时的顺序应该是:

    /etc/enviroment --> /etc/profile -->HOME/.profile>HOME/.env (如果存在)

    /etc/profile 是所有用户的环境变量

    /etc/enviroment是系统的环境变量

    登陆系统时shell读取的顺序应该是:

    /etc/profile ->/etc/enviroment -->HOME/.profile−−>HOME/.env

    原因应该是用户环境和系统环境的区别了,如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值,那应该是以用户环境为准了。

    五、Linux中常见的环境变量及其作用

    Linux中常见的环境变量有:

    1.PATH:指定命令的搜索路径

    2.HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

    3.HISTSIZE:指保存历史命令记录的条数。

    4.LOGNAME:指当前用户的登录名。

    5.HOSTNAME:指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

    6.SHELL:指当前用户用的是哪种Shell。

    7.LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

    8.MAIL:指当前用户的邮件存放目录。

    9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$。

    10.PS2:附属提示符,默认是“>”。

    备注:可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,MyNewPrompt ”。

      # PS1="Hello,My NewPrompt"

    注意:上述变量的名字并不固定,如HOSTNAME在某些Linux系统中可能设置成HOST

    当然,我所列举的上述环境变量并非穷尽列出!

    Linux也提供了修改和查看环境变量的命令!下面通过几个实例来说明:

    1.echo 显示某个环境变量值 echo $PATH

    2.export 设置一个新的环境变量 export HELLO="hello" (可以无引号),在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

    3.env 显示所有环境变量

    4.set 显示本地定义(系统中已经存在)的shell变量以及设置shell变量的新变量值,如果未指定值,则该变量值将被设为NULL。

    5.unset 清除环境变量 unset HELLO

    6.readonly 设置只读环境变量 readonly HELLO ,如果使用了readonly命令的话,变量就不可以被修改或清除了



    展开全文
  • ②使用登录式的交互式shell,系统如何加载环境变量(重点) ③如何去设置变量     前言: 为什么要学习环境变量 >>>系统中有很多默认的环境变量,很多脚本和程序依赖于这些环境变量, ...

    目录

    ①变量是什么东西

    变量分为两种类型:环境变量和局部变量

    >>>环境变量

    >>>局部变量

    ②使用登录式的交互式shell,系统如何加载环境变量(重点)

    ③如何去设置变量

     


     

    前言:

    为什么要学习环境变量

    >>>系统中有很多默认的环境变量,很多脚本和程序依赖于这些环境变量,
    要读懂系统中的脚本和程序中的代码,必须掌握环境变量

    >>>我们需要在Linux环境下编程,包括写shell脚本等,都需要调用系统中的环境变量,
    包括调用系统默认的环境变量和用户自定义的环境变量

    >>>当需要个性化定义环境变量,则需要知道环境变量存储在哪里,如何去定义和使用

     


     

    ①变量是什么东西

    >>>printenv:输出系统中的环境变量

    >>>set         :输出系统中的所有变量

    >>>环境变量:是存储有关shell会话和工作环境的信息

    >>>变量存储在内存中,运行在shell上的程序和脚本,都可以访问

    >>>格式:variabel=values(变量的等号两边都不能有空格,需要空格用引号引起来)

     

    变量分为两种类型:环境变量和局部变量

    >>>环境变量

    环境变量不仅对shell会话可见,对所有的shell创建的子进程都有效

    使用export命令,使变量成为环境变量

    >>>局部变量

    局部变量只能在创建它的shell中有效,当这个shell退出或终止后,局部变量会失效
    即只有在定义它们的进程中有效

     


     

    ②使用登录式的交互式shell,系统如何加载环境变量

    shell的划分

    区别:按是否交互划分:交互式shell和非交互式shell

              按是否登录划分:登录shell和非登陆shell

    >>>交互式shell

    登录、执行命令、退出,当退出后,shell也会终止

    >>>非交互式shell

    以shell script(脚本)方式去执行,不需要进行交互

    >>>登录式shell

    案通过账号密码验证登录到Linux

    >>>非登陆式shell

    通过图形化界面打开一个terminal终端

     

    登录式的交互式shell执行的启动文件——知道系统如何去加载环境变量

    (重点)

    正常情况下:

    涉及文件:/etc/profile ——>/etc/profile.d

    $HOME/.bash_profile$HOME/.bash_login$HOME/.profile

    $HOME/.bashrc ——>/etc/bashrc

     

    >>>先读取/etc/profile文件(系统中每个用户登录一定会执行的文件)

    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL:将这几个变量设置为环境变量

    加载/etc/profile.d 目录下的所有shell脚本(存放用户登录时要执行的应用专属启动文件)

    >>>再读取$HOME/.bash_profile$HOME/.bash_login$HOME/.profile其中的一个文件(按顺序)

    $HOME/.bash_profile:执行$HOME/.bashrc文件;并且PATH=$PATH:$HOME/.local.bin:$HOME/bin

    >>>如果上一步未读取到文件,则读取$HOME/.bashrc文件

    $HOME/.bashrc文件(建议用户在此文件设置自己的别名):读取/etc/bashrc文件

     

    非正常启动情况(su命令切换用户):

    >>>直接读取/etc/bashrc文件,然后进入命令行交互

     


     

    ③如何去设置变量

    >>>设置环境变量:建议在/etc/profile这个文件以格式:variabel=values设置,并export输出作为环境变量

    >>>设置局部变量:在对应的进程下以格式:variabel=values设置,当退出该进程,变量失效

    >>>删除变量:unset命令

    >>>删除局部变量,可以直接unset variable方式去删除

    >>>删除环境变量,登录shell进程下创建的子进程删除环境变量时,只是从子进程中删除,父进程中环境变量不变

     

     


     

    说明:

    >>>以上内容是本人学习的总结

    >>>如还有错误,请留言,指正

    >>>亦可分享自己的想法,互相学习

    展开全文
  • Linux环境变量文件

    千次阅读 2018-04-16 15:04:06
    引言: Linux环境变量文件往复杂了讲,可以讲的东西太多,本文只讲述一些平常工作中常用到知识。1、作用:定义每个用户的操作环境,只有写进文件的环境变量,才能在系统重启后依然有效。2、主要的配置文件:/etc/...
  • Linux环境变量文件介绍

    万次阅读 多人点赞 2018-08-11 13:18:38
    Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。  系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量  用户级环境变量:每一个登录到系统的用户只...
  • linux 刷新环境变量

    万次阅读 2017-11-17 11:27:33
    linux 刷新环境变量
  • 假如要给shell脚本设置快捷运行方式即不用进入到shell脚本当前目录,就可以在任何目录运行shell脚本。方法有很多种,我就介绍下常用的两种方法。 1、修改profile文件 sudo vi /etc/profile ...
  • Linux 添加环境变量和删除环境变量

    千次阅读 2019-01-08 03:53:50
    linux中,查看当前全部的环境变量的命令式env.  当然也可使用 echo来查看环境变量的值。例如查看PATH的内容:echo $PATH  例如要将/home/rongdeguo/Code 加入到环境变量中,可以在shell...
  • linux环境变量-查看 添加环境变量

    千次阅读 2019-02-24 22:40:05
    Linux环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载环境变量,所以管理环境变量的文件也分为系统级和用户级的。...
  • Linux用户环境变量

    2019-01-08 07:20:24
    Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境。在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的。本文主要是讲解Linux...
  • Linux下的环境变量

    千次阅读 2017-12-22 19:05:45
    一、环境变量Linux环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载环境变量。 所以管理环境变量的文件也分为系统级和...
  • Linux环境变量存放文件

    千次阅读 2018-07-03 09:16:07
    Linux环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载环境变量。所以管理环境变量的文件也分为系统级和用户级的,下面贴...
  • linux 环境变量归类和配置 linux系统环境分类 在linux操作新系统中,环境变量概括分为两种:系统环境变量,shell环境; 也许这里把环境变量该叫成环境应该更好些,系统环境,shell环境;而环境变量则是将变量存放...
  • linux下查看和添加PATH环境变量

    千次阅读 2017-06-23 21:59:10
    1、在开发板执行env命令出现的就是环境变量 这些环境变量是shell应用程序(接收输入,根据输入执行程序)的环境变量 每一个应用程序都有环境变量 2、PS命令查看(shell程序对应的是-sh)
  • linux环境变量

    千次阅读 2020-06-24 00:34:26
    现象 写在 /etc/profile 中的...在 ~/.bashrc 中添加 source /etc/profile ,这样每次用户启动bash,则会加载环境变量(加载顺序)。 ~/.bashrc是隐藏文件,需要使用 ls -a 或者在图形界面使用 ctrl+H 才能列出。 ...
  • bash:
  • 总结:抢救了CentOS。避免了重装系统。
  • linux环境变量配置文件

    千次阅读 2019-01-16 15:02:53
    用户正常登录后会以下面过程加载环境变量配置文件: /etc/profile->~/.bash_profile->~/.bashrc->/etc/bashrc 1.cat /etc/profile查看,主要设置了 export PATH USER LOGNAME MAIL HOSTNAME ...
  • linux添加自己的环境变量

    千次阅读 2018-05-10 10:05:43
    linux中添加环境变量有多种:1设置临时环境变量export PATH=$PATH:/usr/sbin/2修改profile文件,增加环境变量vim ./etc/profile增加你要添加的环境变量如下图:然后 source /etc/profile就可以了...
1 2 3 4 5 ... 20
收藏数 131,056
精华内容 52,422
关键字:

linux 加载环境变量