当前位置: 首页 > 科技观察

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

时间:2023-03-12 21:31:18 科技观察

本文转载请联系Linux常用命令公众号。面试官:哪些环境变量与Shell命令相关?答:export、declare、source、env、set/unset。面试官:它们的作用是什么?答:...文本导出的作用是设置全局变量,在整个Shell环境中都可以引用。未使用export设置的变量只能在您自己的shell脚本中使用。我们也可以直接使用[export]命令查看全局可以使用的环境变量。示例如下:[root@linuxido~]#export##?查看所有导出设置环境变量declare-xCLASSPATH=".:/usr/local/java/jdk1.8.0_131/lib:/usr/local/java/jdk1.8.0_131/jre/lib:"declare-xDISPLAY="localhost:10.0"declare-xGEM_HOME="/usr/local/rvm/gems/ruby-2.7.0"...##?声明设置环境变量可以看到[declare-x]也等同于[export],所以定义环境变量基本上有3种方式,例子如下:exportJAVA_HOME=/usr/local/java/jdk1.8.0_131##1,[exportvariablename=variableValue]PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin##2、先set[variablename=variablevalue]exportPATH##再set[exportvariablename]declare-xDISPLAY="localhost:10.0"##3,[declare–xvariablename=variablevalue]一般用export定义全局变量后,会用[source]刷新定义的环境变量文件让自己的成绩生效(用点[.]可以达到同样的效果)这样s刷新系统全局变量[source/etc/profile]或刷新用户全局变量[.~/.bash_profile]。如果不使用source刷新变量,需要重新登录才能生效。env也可以检查环境变量,不像export,它只检查用户的环境变量。示例如下:[root@linuxido~]#env##?查看用户环境变量...HOME=/rootLOGNAME=root...[set]也可以显示本地用户变量,但不仅限于本地用户变量,还有特定于shell的变量,例如BASH_ALIASES、BASH_ARGC。示例如下:[root@linuxido~]#setBASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepathBASH_ALIASES=()BASH_ARGC=()BASH_ARGV=()...set还有调试脚本的功能,即在Shell中指定[set-x],详见10.4.2章节。使用[export]临时设置一个环境变量,示例如下:[root@linuxido~]#exportLINUX_HOME=linuxido.com##export设置一个临时变量[root@linuxido~]#echo$LINUX_HOME##打印临时变量值linuxido。com临时清除一个环境变量,使用[unset],例子如下:[root@linuxido/shell]#echo$LINUX_HOME##查看临时变量linuxido.com[root@linuxido/shell]#unsetLINUX_HOME##unset取消临时变量[root@linuxido/shell]#echo$LINUX_HOME##Temporaryvariablehasnovalue[root@linuxido/shell]##附录:常用环境变量bashrc、profile等环境变量设置文件中,常用的一堆一个是设置环境变量,例子如下:[root@linuxido~]#echo$SHELL##查看当前Shell变量/bin/bash[root@linuxido~]#echo$PS1##查看PS1环境变量[\u@\h\w]\$\$[root@dihuiyuanlogs]#echo$PS2##多行命令提示符,也可以把这个变量的值改成->>##很长的命令可以通过末尾加“\”显示[root@dihuiyuanlogs]#echo$PS3##默认为空,select循环语句的默认提示[root@dihuiyuanlogs]#echo$PS4##bash-x或set-x,逗号调试脚本时nd提示输出+[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/本地/sbin:/usr/local/bin:/usr/sbin:/usr/bin…...当然这只是冰山一角,有兴趣的可以参考相关文档或文档