linux 环境变量掌握这些就够了

Posted 涤生手记大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 环境变量掌握这些就够了相关的知识,希望对你有一定的参考价值。

 一、什么是环境变量

在计算机系统中有一种数据类型称为变量,变量是用来保存可变值的,操作计算机时可以直接通过变量名称来提取到对应的变量值。而我们今天提到的环境变量本质上也是变量,它的服务对象是shell程序。

很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息。在Linux系统上有很多地方可以设置环境变量,了解去哪里设置相应的环境变量很重要。

小提示

Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。

虽然bash shell 使用一致的专有环境变量,但不同的 Linux 发行版经常会添加其自有的环境变量。你在本章中看到的环境变量的例子可能会跟你安装的发行版中看到的结果略微不同。如果遇到本书未讲到的环境变量,可以查看你的Linux发行版上的文档。

 1.1 全局变量

环境变量分为两类:
  • 全局变量
  • 局部变量
全局环境变量对于 shell 会话和所有生成的子 shell 都是可见的(我们知道linux支持多用户同时登陆,多用户同时可以使用全局变量)。局部变量则只对创建它们的shell可见。这让全局环境变量对那些所创建的子 shell 需要获取父 shell 信息的程序来说非常有用。

a: 查看全部的环境变量

   #env
 

b:查看指定的环境变量值

echo + $变量名 

1.2 局部变量

和全局变量对应,局部环境变量只能在定义它们的进程中可见。

Linux 系统并没有一个只显示局部环境变量的命令。set 命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。

 Linux 作为一个多用户多任务的操作系统,能够为每个用户提供独立的、合适的工作运行环境,因此,一个相同的环境变量会因为用户身份的不同而具有不同的值。

二、默认的环境变量

Linux 系统能够正常运行并且为用户提供服务,需要数百个环境变量来协同工作,但是,我们没有必要逐一学习每个变量,这里给大家列举了几个非常重要的环境变量。

环境变量名称作用
HOME用户的主目录(也称家目录)
SHELL 用户使用的 Shell 解释器名称
PATH定义命令行解释器搜索用户执行命令的路径
EDITOR用户默认的文本解释器
RANDOM生成一个随机数字
LANG系统语言、语系名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
PS1Bash解释器的提示符
MAIL邮件保存路径

三、设置 PATH 环境变量

shell 命令行界面中输入一个外部命令时 shell 必须搜索系统来找到对应的程序。PATH 环境变量定义了用于进行命令和程序查找的目录。
查看主机的PATH变量:

 注意:PATH中的目录使用冒号分隔,而且必须使用绝对路径。

举例操作,给系统添加一个新的PATH变量,只需要引用原有的,在后面追加即可。

尖叫提示:对 PATH变量的修改只能持续到退出或重启系统。这种效果并不能一直持续。后面我们会讲到如何永久保持环境变量的修改效果。

四、环境变量持久化

注意,敲黑板 ,当登录 Linux 系统时, bash shell 会作为登录 shell 启动。登录 shell 会从 5 个不同的启动文件里读取命令:(所以如果我们希望启动shell时就执行某个命令的话,只需要把这些命令放到下面5个目录文件里即可)
  1.  /etc/profile
  2.  $HOME/.bash_profile
  3.  $HOME/.bashrc
  4.  $HOME/.bash_login
  5.  $HOME/.profile
/etc/profile 文件是系统上默认的 bash shell 的主启动文件。系统上的每个用户登录时都会执行这个启动文件。

4.1 /etc/profile文件

/etc/profile 文件是 bash shell 默认的的主启动文件。只要你登录了 Linux 系统, bash 就会执行 /etc/profile启动文件中的命令。
一般情况下,PATH变量会设置在这个配置文件中,这样会在全局的所有用户中生效。

说明:

很多时候我们为了方便管理,会在 /etc/profile.d 目录下自定义文件,写入我们定义的PATH变量,这个目录下的文件之所以生效的原因是在/etc/profile文件中,循环读取 /etc/profile.d目录下的所有文件。

4.2. $HOME目录下的启动文件

剩下的启动文件都起着同一个作用:提供一个用户专属的启动文件来定义该用户所用到的环
境变量。大多数 Linux 发行版只用这四个启动文件中的一到两个:
  •  $HOME/.bash_profile
  •  $HOME/.bashrc
  •  $HOME/.bash_login
  •  $HOME/.profile

小提示$HOME表示的是某个用户的家(主)目录 

如果我们执行我们追加的PATH路径在单独的某一个用户下生效,此时我们就可以将配置写在$HOME/.bash_profile文件中。

五、引入环境变量【export】

我们在工作环境中很多时候会有零时 新增,修改或删除环境变量的场景,此时使用命令【export】来完成。

使用的语法

export [-fnp][变量名称]=[变量设置值]

 :export -p 可以列出当前用户下生效的环境变

export  变量名 = 变量值 //用此方式来零时定义一个我们需要的环境变量

 可以看到定义的零时变量已经生效。但是当退出此用户环境后,此变量将失效。

实战常用:

export 更多的时候我们会直接用来零时修改 PATH变量。

例如:export PATH=$PATH:/home/test/mysql/bin

 此时新增的PATH 就会立生效。

提示

        在hadoop环境下,因为此框架特有的权限识别机制,还可以使用 export 来零时伪装用户身份,如下截图:

六、硬核总结

环境变量的知识深入来学习的话,还是有很多的知识点可以展开的,但是为了挺高我们学习的高效性,我们只需要了解以下几点,在工作中就是完全够用了。

一,环境变量的作用

二、怎么查看环境变量

三、如何定义追加一个新的PATH变量

四、永久保存的PATH变量的文件位置

五、引入环境变量(export + 环境变量名)

以上是关于linux 环境变量掌握这些就够了的主要内容,如果未能解决你的问题,请参考以下文章

linux生产文本处理掌握这些就够了:awk,gawk,sed,grep,sort

linux生产文本处理掌握这些就够了:awk,gawk,sed,grep,sort

ES6这些就够了

ES6这些就够了

33Java 异常掌握这些就够了(图解 Java 中的异常)

掌握linux系统防火墙有它就够了