美文网首页
Linux下设置和查看环境变量

Linux下设置和查看环境变量

作者: 阿基米德来了 | 来源:发表于2019-08-21 19:40 被阅读0次

Linux的变量种类

按变量的生存周期来划分,Linux变量可分为两类:
  1 永久的:需要修改配置文件,变量永久生效。
  2 临时的:使用export命令声明即可,变量在关闭shell时失效。

设置变量的三种方法

直接运行export命令定义变量【只对当前shell(bash)有效(临时的)】

  在shell的命令行下直接使用 export variable=value。该变量只在当前的shell(bash)或其子shell(bash)下是有效的。shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

在/etc/profile文件中添加变量【对所有用户生效(永久的)】

在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量

# vim /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行$ sudo source /etc/profile,不然只能在下次重进此用户时生效。

在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】

在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile

$ vim  /home/guok/.bash.profile  添加如下内容:
export CLASSPATH=./JAVAHOME/lib;JAVA_HOME/jre/lib 

注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile,不然只能在下次重进此用户时生效。

为什么修改/etc/profile和用户目录下的.bash_profile文件就能导入环境变量且作用范围不一样呢?
  这个和login shell的流程有关。我们每次开启一个终端,系统会默认读取配置文件来配置好环境等信息。首先对所有用户会默认读取/etc/profile这个文件,它接着读取或调用/etc/profile.d/*.sh和/etc/locale.conf。接着,对于不同的用户,系统会 依次 查看并执行用户根目录下的.bash_profile、.bash_login、.profile文件。这里注意,系统并不会三个文件都执行,而是会执行 第一个找到 的文件,所以这三个文件并不一定都会在用户的根目录出现。
  对此,我们有需要也可以在这几个文件下写下自己需要的脚本,实现进去终端自动执行。

环境变量的查看与删除

1 使用echo命令查看单个环境变量。例如: echo $PATH
2 使用env查看所有环境变量。
3 使用set查看变量(包括环境变量和自定义变量)。
4 使用unset删除指定的变量

  set可以设置某个环境变量的值。相对的,清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:

#增加一个环境变量TEST 
$ export TEST="Test..." 
$ env | grep TEST
#此命令有输出,证明环境变量TEST已经存在了 
$ TEST=Test... 
$
#删除环境变量TEST
$ unset  TEST  
$ env|grep TEST 
#此命令没有输出,证明环境变量TEST已经删除
$

exportset我们知道环境变量和自定义变量,那这两种变量到底有什么区别呢?
  差异主要在于两者是否能被子进程使用。
  我们在shell命令行敲下一个命令时,其实是让当前终端这个进程(一般也就是bash)生成一个子进程去执行,而父进程则会等待。这时候,子进程仅会继承父进程的环境变量,而不会继承自定义变量(即我们使用$ variable=value这种方式定义的变量)。export方式可以让我们传递变量到子进程去使用。
  相反的,我们可以使用declare来将环境变量转变为自定义变量

常用的环境变量

名称 作用
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$

相关文章

网友评论

      本文标题:Linux下设置和查看环境变量

      本文链接:https://www.haomeiwen.com/subject/uuzisctx.html