Shell编程之更改与查看常用环境变量
2023-03-15 22:46:48 时间
本文转载自微信公众号「Linux常用命令」,作者妖生。转载本文请联系Linux常用命令公众号。
面试官:与哪些环境变量相关Shell命令?
答:export、declare、source、env、set/unset。
面试官:它们分别有什么作用?
答:……
正文
export的作用就是设置全局变量,可以在整个Shell环境中被引用。
没有使用export设置的变量,只能在自己的Shell脚本中起作用。我们也可以直接使用【export】命令来查看可以被全局使用的环境变量。
示例如下:
- [root@linuxido ~]# export ## 查看所有export设置的环境变量
- declare -x CLASSPATH=".:/usr/local/java/jdk1.8.0_131/lib:/usr/local/java/jdk1.8.0_131/jre/lib:"
- declare -x DISPLAY="localhost:10.0"
- declare -x GEM_HOME="/usr/local/rvm/gems/ruby-2.7.0"
- …… ## declare 设置环境变量
我们可以看到【declare -x】也等同于【export】,所以定义环境变量的方式基本上有三种,示例如下:
- export JAVA_HOME=/usr/local/java/jdk1.8.0_131 ## 1、【export 变量名=变量值】
- PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin ## 2、先设置【变量名=变量值】
- export PATH ## 再设置【export 变量名】
- declare -x DISPLAY="localhost:10.0" ## 3、【declare –x 变量名=变量值】
一般在使用export定义过全局变量后,都会使用【source】刷新文件中定义的环境变量,使其档次生效(使用点【.】可达到同样效果)如刷新系统全局变量【source /etc/profile】或刷新用户全局变量【. ~/.bash_profile】。
不用source刷新变量的话则要重新登录才能生效。
env也可以查看环境变量,不同于export,它只查看用户的环境变量。
示例如下:
- [root@linuxido ~]# env ## 查看用户环境变量
- ……
- HOME=/root
- LOGNAME=root
- ……
【set】也可以显示本地用户变量,但是不只是本地用户变量,还包括Shell特有的变量,如BASH_ALIASES 、BASH_ARGC。示例如下:
- [root@linuxido ~]# set
- BASH=/bin/bash
- BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
- BASH_ALIASES=()
- BASH_ARGC=()
- BASH_ARGV=()
- ……
set还有个作用是可以调试脚本,即在Shell中注明【set -x】,详见10.4.2章节。
使用【export】可以临时设置一个环境变量,示例如下:
- [root@linuxido ~]# export LINUX_HOME=linuxido.com ## export设置临时变量
- [root@linuxido ~]# echo $LINUX_HOME ## 打印临时变量值
- linuxido.com
临时消除一个环境变量,使用【unset】,示例如下:
- [root@linuxido /shell]# echo $LINUX_HOME ## 查看临时变量
- linuxido.com
- [root@linuxido /shell]# unset LINUX_HOME ## unset取消临时变量
- [root@linuxido /shell]# echo $LINUX_HOME ## 临时变量已经没有值了
- [root@linuxido /shell]##
附录:常用环境变量
在bashrc、profile等环境变量设置文件中,设置了一堆我们常用的环境变量,示例如下:
- [root@ linuxido ~]# echo $SHELL ## 查看当前Shell变量
- /bin/bash
- [root@linuxido ~]# echo $PS1 ## 查看PS1环境变量
- [u@h w]$$
- [root@dihuiyuan logs]# echo $PS2 ## 多行命令提示符,也可以更改此变量值为->
- > ## 一个非常长的命令可以通过在末尾加“”使其分行显示
- [root@dihuiyuan logs]# echo $PS3 ## 默认为空,select循环语句的默认提示
- [root@dihuiyuan logs]# echo $PS4 ## bash -x或set -x,调试脚本时输出的命令提示符
- +
- [root@linuxido ~]# echo $HOME ## 查看用户家目录
- /root
- [root@linuxido ~]# echo $USER ## 查看用户
- root
- [root@linuxido ~]# echo $LANG ## 查看是否中文环境
- zh_CN.UTF-8
- [root@linuxido ~]# echo $HISTSIZE ## 查看历史命令条数
- 1000
- [root@linuxido ~]# echo $PATH ## 查看系统环境PATH
- /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin……
当然,这仅仅是冰山一角,有兴趣的可以查阅相关文件或文档。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十