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

原文地址:https://www.cnblogs.com/yu2006070-01/p/9958745.html