Linux 环境变量简介

Linux 和 Windows 系统相似,在安装许多软件的时候是需要去配置环境变量。同样,在 Linux 里也是需要去配置相应的环境变量。而在 Linux 中的环境变量主要是系统级用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是用户使用系统时加载的环境变量。

  • 系统级

    • /etc/profile文件:当用户登录时,操作系统为用户定制的用于登录到系统的每个用户的第一个文件,通常是调用/etc/bash.bashrc 文件。

    • /etc/environment文件:在登录时操作系统调用的第二个文件,在读取 profile 之前,系统用于设置环境文件的环境变量。

  • 用户级(文件主要是在/home目录下)

    • ~/.profile:每个用户都可以调用来输入自己使用的 shell 信息,不过在用户登录时,该文件只执行一次。

    • ~/.bashrc: 包含登录用户的专用 bash shell 的 bash 信息。也就是说每开一个 shell,该文件都会被读取一次。

  • 临时的

    • 针对当前 shell 的环境变量。

简单来说,环境变量就是指定一个目录,软件在运行的时候,相关程序会按照该目录来查找相关文件。

前面是从系统和用户级来划分环境变量。 若按照变量的生存周期来划分,那么变量就可以分为:

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

  • 临时的:使用 export 命令来声明就行,变量在关闭 shell 的时候失效。

若按照环境变量自身的信息来划分,则可以分为:

  • 当前 shell 进程私有用户自定义变量。此时变量只在当前 shell 中有效

  • shell 自身的内建变量

  • 从自定义变量导出的环境变量

变量的设置方法:

 /etc/profile 文件中添加变量(永久的)

用 vim 编辑器编辑 /etc/profile 文件来增加变量,将作用于 Linux 下所有用户,且具有永久性。(此方法谨慎使用!

修改 ~/.profile 文件(对单一用户生效(永久的))

这种方法较为安全,可以把使用这些环境变量的权限控制到用户级别,主要是针对某一特定的用户,如果需要给某个用户权限使用这些环境变量,只需要修改其个人用户主目录下的 .profile 文件就可以了。

eg:编辑shiaynlou用户目录(/home/shiyanlou)下的 .profile,即 /home/shiyanlou/.profile 文件。

5.2.3 直接运行export命令定义环境变量(临时的)

在控制台中设置,不赞成这种方式,这种设置只对当前的 shell 起作用,换一个 shell 设置就无效了。 在 shell 的命令行下直接使用 [export 变量名=变量值] 来定义变量。

在每个用户的 home目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。zsh 的配置文件是 .zshrc,相应 Bash 的配置文件为 .bashrc 。它们在 etc 下还都有一个或多个全局的配置文件,不过我们一般只修改用户目录下的配置文件。因此在退出当前 shell 后,临时的自定义环境变量不会在新打开的 shell 中出现。

添加一个自定义的变量

$ export shiyanlou="shiyanlou001"$ echo $shiyanlou

注:使用 echo 输出变量时需要在变量名前面加 $ 符号

$export shiyanlou="shiyanlou001"

$echo $shiyanlou

image.png


export 命令查看

可以用来显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

可以简单体会一下,先在 Shell 中设置一个变量 temp=shiyanlou,然后再新创建一个子 Shell 查看 temp 变量的值:

$  ~
$ 
$ 
$ zsh    # 创建子进程,实验楼环境使用的是 zsh ,ubuntu 默认的 shell 为bash 
$ 
$  
$  temp
$ 
$

blob.png

echo 命令

例如,我们查看 PATH 环境变量

blob.png

env 命令查看所有的环境变量

可以用来显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。

blob.png

set 命令查看本地定义的环境变量

可以用来显示当前 Shell所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。

blob.png

使用vimdiff直观查看环境变量

对于刚才讲到的三种环境变量的查看 :exportenvset 我们还可以通过 vimdiff 工具来直观的比较它们之间的差别:

$ temp=shiyanlou
$  temp_env=shiyanlou
$ env|sort>env.txt
$ |sort>export.txt
$ |sort>set.txt

命令的输出是用到了管道| 和用sort命令来排序,将文本文件重定向。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章