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用户执行成功,说明全局环境变量设置成功。

  • 相关阅读:
    MySQL的去重
    java_集合框架概述
    java_泛型
    10base-t的数据发送
    bash编辑功能,在命令行里编辑快捷键
    cisco ios 密码恢复
    OSPF邻居状态
    查找修补文件差异diff、patch
    生成ISO文件
    shell 生成文件统计信息
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/9958745.html
Copyright © 2011-2022 走看看