zoukankan      html  css  js  c++  java
  • 青蛙学Linux—用户环境变量

    环境变量(environment variables)一般是指在操作系统中用来指定系统运行环境的一些参数,是一个具有特定名字的对象。用户通过设置环境变量,来更方便的运行进程。如PATH变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统如果在当前目录下找不到该程序,会到PATH中设置的路径下查找。

    Linux中的环境变量分为全局环境变量和用户环境变量。全局环境变量对所有用户都生效,用户环境变量则只对设置了该变量的用户生效。设置环境变量时,如果该变量仅有某个用户使用,则只需要设置用户环境变量;如果需要提供全局使用,则设置全局环境变量。

    注意:环境变量的变量名均为大写。

    1、环境变量配置文件

    全局环境变量配置文件:

    /etc/profile

    用户环境变量配置文件:

    ~/.bash_profile
    ~/.bashrc
    # ~/表示用户的家目录

    当用户登录时,shell会首先执行系统全局配置文件/etc/profile,然后执行当前用户的用户环境变量~/.bash_profile,当~/.bash_profile不存在时则执行~/.bashrc。

    环境变量初始化过程如下图所示:

    图片1

    2、环境变量相关命令

    查看环境变量的值:

    echo $变量名

    列出已定义的环境变量:

    env

    临时新增、修改、删除环境变量(仅在本次登录中有效):

    export [-fnp] [变量名称]{=[变量值]]
    
    # -f表示[变量名称]为函数名称
    # -n表示删除指定的变量。实际上该变量并未删除,只是在本次执行环境中不会在生效
    # -p列出所有的环境变量

    删除环境变量:

    unset 变量名

    3、常用系统内置变量

    • PATH:指定命令的搜索路径
    • HOME:用户家目录
    • HISTSIZE:保存历史命令记录的条数
    • USER:当前用户
    • HOSTNAME:主机名
    • SHELL:当前用户使用的shell
    • LANG:当前系统的语言
    • PWD:用户当前目录
    • MAIL:用户系统邮件存放路径

    4、自定义环境变量

    自定义环境变量时,如果仅当次登录生效,可以使用export命令临时设置;需要全局生效的环境变量可配置在/etc/profile文件中;为某个用户配置的环境变量可配置在~/.bash_profile文件中。以下以在当前系统中设置源码安装的Python 3.7的环境变量为例介绍环境变量的设置。

    环境:

    • 操作系统:CentOS 7.5.1804
    • Python:3.7版本,通过源码安装在/usr/local/python37目录下
    • Pyhton可执行文件:/usr/local/python/bin/python3.7
    • 目的:通过环境变量的设置使在任意位置运行命令python3.7均可进入Python 3.7环境

    这里是要使输入命令时能进入Python 3.7环境,实际上就是将Python 3.7的可执行文件路径加入到PATH环境变量中。

    4.1、设置临时环境变量

    直接输入以下命令:

    [root@localhost ~]# export PATH=$PATH:/usr/local/python37/bin

    测试:

    # 输入python3.7直接进入Python 3.7环境
    [root@localhost ~]# python3.7
    Python 3.7.1 (default, Nov 15 2018, 10:57:07) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    
    # 查看PATH
    [root@localhost ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python37/bin

    这里可以看到环境变量设置成功。当退出这次登录后,这次设置的环境变量就失效了。

    4.2、为root用户设置环境变量

    为root用户设置环境变量,只要修改root用户家目录下的.bash_profile文件即可。原.bash_profile文件有以下内容:

    [root@localhost ~]# more .bash_profile 
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    	. ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH

    这里只要将“PATH=$PATH:$HOME/bin”改为:

    PATH=$PATH:$HOME/bin:/usr/local/python37/bin

    修改完成后需要即使生效须使用以下命令重载配置文件:

    [root@localhost ~]# source .bash_profile

    测试:

    # 当前使用root用户
    [root@localhost ~]# python3.7
    Python 3.7.1 (default, Nov 15 2018, 10:57:07) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>

    root用户可以成功使用python3.7命令进入Python 3.7环境。当前系统还有另一个用户fangyu,使用su - fangyu切换到fangyu用户测试是否可以使用python3.7命令:

    [fangyu@localhost ~]$ whoami
    fangyu
    [fangyu@localhost ~]$ python3.7
    -bash: python3.7: 未找到命令

    用户fangyu无法使用为root用户设置的环境变量。

    4.3、设置全局环境变量

    要设置全局环境变量,只要修改/etc/profile即可:

    # 修改PATH变量,可以在以下内容后修改
    pathmunge () {
        case ":${PATH}:" in
            *:"$1":*)
                ;;
            *)
                if [ "$2" = "after" ] ; then
                    PATH=$PATH:$1
                else
                    PATH=$1:$PATH
                fi
        esac
    }
    
    # 添加
    PATH=$PATH:/usr/local/python37/bin

    测试:

    # 当前登录用户root
    [root@localhost ~]# whoami
    root
    [root@localhost ~]# python3.7
    Python 3.7.1 (default, Nov 15 2018, 10:57:07) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 

    root用户测试成功,下面使用su - fangyu命令切换到fangyu用户测试是否可以执行:

    [fangyu@localhost ~]$ whoami
    fangyu
    [fangyu@localhost ~]$ python3.7
    Python 3.7.1 (default, Nov 15 2018, 10:57:07) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 

    fangyu用户执行成功,说明全局环境变量设置成功。

  • 相关阅读:
    LightOJ 1132 Summing up Powers(矩阵快速幂)
    hdu 3804 Query on a tree (树链剖分+线段树)
    LightOJ 1052 String Growth && uva 12045 Fun with Strings (矩阵快速幂)
    uva 12304 2D Geometry 110 in 1! (Geometry)
    LA 3263 That Nice Euler Circuit (2D Geometry)
    2013 SCAUCPC Summary
    poj 3321 Apple Tree (Binary Index Tree)
    uva 11796 Dog Distance (几何+模拟)
    uva 11178 Morley's Theorem (2D Geometry)
    动手动脑
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/9958745.html
Copyright © 2011-2022 走看看