使用env命令即可全部列出系统预设的全部系统变量了。不过登录的用户不一样这些环境变量的值也不一样。当前显示的就是root这个账户的环境变量了。下面笔者简单介绍一下常见的环境变量: PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 前用户Shell类型 LANG 语言相关的环境变量,多语言可以修改此环境变量 MAIL 当前用户的邮件存放目录 PWD 当前目录 env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。 限于篇幅,笔者在上例中并没有把所有显示结果都截图。set不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来。用户自定义变量?是的,用户自己同样可以定义变量。 虽然你可以自定义变量,但是该变量只能在当前shell中生效,不信你再登录一个shell试试? 使用bash命令即可再打开一个shell,此时先前设置的myname变量已经不存在了,退出当前shell回到原来的shell,myname变量还在。那要想设置的变量一直生效怎么办?有两种情况: 1) 要想系统内所有用户登录后都能使用该变量 需要在/etc/profile文件最末行加入 “export myname=Aming” 然后运行”source /etc/profile”就可以生效了。此时你再运行bash命令或者直接su - test账户看看。 2)只想让当前用户使用该变量 需要在用户主目录下的.bashrc文件最后一行加入“export myname=Aming” 然后运行”source .bashrc”就可以生效了。这时候再登录test账户,myname变量则不会生效了。上面用的source命令的作用是,讲目前设定的配置刷新,即不用注销再登录也能生效。 笔者在上例中使用”myname=Aming”来设置变量myname,那么在linux下设置自定义变量有哪些规则呢? a. 设定变量的格式为”a=b”,其中a为变量名,b为变量的内容,等号两边不能有空格; b. 变量名只能由英、数字以及下划线组成,而且不能以数字开头; c. 当变量内容带有特殊字符(如空格)时,需要加上单引号; 有一种情况,需要你注意,就是变量内容中本身带有单引号,这就需要用到双引号了。 d. 如果变量内容中需要用到其他命令运行结果则可以使用反引号; e. 变量内容可以累加其他变量的内容,需要加双引号; 在这里如果你不小心把双引号加错为单引号,将得不到你想要的结果 通过上面几个例子也许你能看得出,单引号和双引号的区别:用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。 在前面的例子中笔者多次使用了bash命令,如果在当前shell中运行bash指令后,则会进入一个新的shell,这个shell就是原来shell的子shell了,不妨你用pstree指令来查看一下。 |