Shell编程之更改与查看常用环境变量

系统 Linux
没有使用export设置的变量,只能在自己的Shell脚本中起作用。我们也可以直接使用【export】命令来查看可以被全局使用的环境变量。

[[408139]]

本文转载自微信公众号「Linux常用命令」,作者妖生。转载本文请联系Linux常用命令公众号。

面试官:与哪些环境变量相关Shell命令?

答:export、declare、source、env、set/unset。

面试官:它们分别有什么作用?

答:……

正文

export的作用就是设置全局变量,可以在整个Shell环境中被引用。

没有使用export设置的变量,只能在自己的Shell脚本中起作用。我们也可以直接使用【export】命令来查看可以被全局使用的环境变量。

示例如下:

  1. [root@linuxido ~]# export       ##  查看所有export设置的环境变量  
  2. declare -x CLASSPATH=".:/usr/local/java/jdk1.8.0_131/lib:/usr/local/java/jdk1.8.0_131/jre/lib:" 
  3. declare -x DISPLAY="localhost:10.0" 
  4. declare -x GEM_HOME="/usr/local/rvm/gems/ruby-2.7.0" 
  5. ……      ##  declare 设置环境变量 

我们可以看到【declare -x】也等同于【export】,所以定义环境变量的方式基本上有三种,示例如下:

  1. export JAVA_HOME=/usr/local/java/jdk1.8.0_131   ## 1、【export 变量名=变量值】 
  2.  
  3. PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin   ## 2、先设置【变量名=变量值】 
  4. export PATH                             ## 再设置【export 变量名】 
  5.  
  6. declare -x DISPLAY="localhost:10.0"         ## 3、【declare –x 变量名=变量值】 

一般在使用export定义过全局变量后,都会使用【source】刷新文件中定义的环境变量,使其档次生效(使用点【.】可达到同样效果)如刷新系统全局变量【source /etc/profile】或刷新用户全局变量【. ~/.bash_profile】。

不用source刷新变量的话则要重新登录才能生效。

env也可以查看环境变量,不同于export,它只查看用户的环境变量。

示例如下:

  1. [root@linuxido ~]# env  ## 查看用户环境变量 
  2. …… 
  3. HOME=/root 
  4. LOGNAME=root 
  5. …… 

【set】也可以显示本地用户变量,但是不只是本地用户变量,还包括Shell特有的变量,如BASH_ALIASES 、BASH_ARGC。示例如下:

  1. [root@linuxido ~]# set  
  2. BASH=/bin/bash 
  3. BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath 
  4. BASH_ALIASES=() 
  5. BASH_ARGC=() 
  6. BASH_ARGV=() 
  7. …… 

set还有个作用是可以调试脚本,即在Shell中注明【set -x】,详见10.4.2章节。

使用【export】可以临时设置一个环境变量,示例如下:

  1. [root@linuxido ~]# export LINUX_HOME=linuxido.com   ##  export设置临时变量 
  2. [root@linuxido ~]# echo $LINUX_HOME             ##  打印临时变量值 
  3. linuxido.com 

临时消除一个环境变量,使用【unset】,示例如下:

  1. [root@linuxido /shell]# echo $LINUX_HOME    ##  查看临时变量 
  2. linuxido.com 
  3. [root@linuxido /shell]# unset LINUX_HOME    ##  unset取消临时变量 
  4. [root@linuxido /shell]# echo $LINUX_HOME    ##  临时变量已经没有值了 
  5.  
  6. [root@linuxido /shell]## 

附录:常用环境变量

在bashrc、profile等环境变量设置文件中,设置了一堆我们常用的环境变量,示例如下:

  1. [root@ linuxido ~]# echo $SHELL ##  查看当前Shell变量 
  2. /bin/bash 
  3. [root@linuxido ~]# echo $PS1        ##  查看PS1环境变量 
  4. [\u@\h \w]\$\$ 
  5. [root@dihuiyuan logs]# echo $PS2    ##  多行命令提示符,也可以更改此变量值为-> 
  6. >           ##  一个非常长的命令可以通过在末尾加“\”使其分行显示 
  7. [root@dihuiyuan logs]# echo $PS3    ##  默认为空,select循环语句的默认提示 
  8.  
  9. [root@dihuiyuan logs]# echo $PS4    ## bash -x或set -x,调试脚本时输出的命令提示符 
  10. [root@linuxido ~]# echo $HOME   ## 查看用户家目录 
  11. /root 
  12. [root@linuxido ~]# echo $USER   ## 查看用户 
  13. root 
  14. [root@linuxido ~]# echo $LANG   ## 查看是否中文环境 
  15. zh_CN.UTF-8 
  16. [root@linuxido ~]# echo $HISTSIZE   ## 查看历史命令条数 
  17. 1000 
  18. [root@linuxido ~]# echo $PATH   ## 查看系统环境PATH 
  19. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin…… 

当然,这仅仅是冰山一角,有兴趣的可以查阅相关文件或文档。

 

责任编辑:武晓燕 来源: Linux常用命令
相关推荐

2020-08-05 09:48:20

Docker容器工具

2020-08-17 07:38:47

Linux系统

2010-06-07 11:33:11

Linux查看环境变量

2010-05-27 17:17:29

Linux查看环境变量

2011-06-14 09:04:52

Qt 环境变量

2022-10-14 13:33:35

2009-11-03 08:53:42

LinuxWindows环境变量

2012-09-18 01:22:33

Java环境变量Classpath

2021-02-15 15:52:27

Linux环境变量命令

2023-11-01 13:40:25

GolangGo

2024-01-22 13:53:00

Linux环境变量

2009-07-03 16:46:07

JSP环境变量

2009-07-07 12:48:29

JDK环境变量设置

2019-09-09 09:02:04

Linux脚本语言文本编辑器

2009-06-15 16:28:30

JAVA环境变量

2009-10-21 12:58:18

2010-10-11 09:25:31

MySQL环境变量

2011-12-21 10:46:17

Java

2010-04-21 16:58:51

Unix环境变量

2009-07-07 13:44:35

JDK环境变量设置
点赞
收藏

51CTO技术栈公众号