您当前的位置:首页 > 分类 > 技术资讯 > LINUX > 正文

Linux 环境变量

发布时间:2016-12-30 15:51:18      来源:51推一把
【摘要】PATH,这个环境变量就是shell预设的一个变量,通常shell预设的变量都是大写的。变量,说简单点就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿PATH来讲,这个PATH就代替了所有常用命令的绝对路径的设定。
PATH,这个环境变量就是shell预设的一个变量,通常shell预设的变量都是大写的。
变量,说简单点就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。
就拿PATH来讲,这个PATH就代替了所有常用命令的绝对路径的设定。因为有了PATH这个变量,所以我们运行某个命令时不再去输入全局路径,直接敲命令名即可。

#echo $PATH  可以显示变量的值
#echo $PWD  echo $HOME  echo $LOGNAME 等,除了PATH, HOME, LOGNAME外,系统预设的环境变量还有哪些呢?

#env 列出系统预设的全部系统变量,不过登录的用户不一样这些环境变量的值也不一样
#set 不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来。
ps:env命令显示的变量只是环境变量,系统预设的变量其实还有很多,你可以使用set命令把系统预设的全部变量都显示出来。

#自定义变量
#myname=Aime
#echo $myname
Aime
该变量只能在当前shell中生效

#如何设置永久生效的变量?
1)要想系统内所有用户登录后都能使用该变量
需要在/etc/profile文件最末行加入“export myname=Aming”然后运行”source /etc/profile”就可以生效了。
2)只想让当前用户使用该变量
需要在用户主目录下的.bashrc文件最后一行加入“export myname=Aming” 然后运行”source .bashrc”就可以生效了。
ps:上面用的source命令的作用是,讲目前设定的配置刷新,即不用注销再登录也能生效。

#设置自定义变量规则
a.设定变量的格式为”a=b”,其中a为变量名,b为变量的内容,等号两边不能有空格;
eg:#myname=Aime
b.变量名只能由英、数字以及下划线组成,而且不能以数字开头;
c.当变量内容带有特殊字符(如空格)时,需要加上单引号;
eg:#myname=Li Ming
有一种情况,需要你注意,就是变量内容中本身带有单引号,这就需要用到双引号了。
eg:#myname="Lis"
d. 如果变量内容中需要用到其他命令运行结果则可以使用反引号;
eg:#myname=`pwd`
e. 变量内容可以累加其他变量的内容,需要加双引号;
eg:#myname="$LOGNAME"Aming
在这里如果你不小心把双引号加错为单引号,将得不到你想要的结果
eg:#myname=$LOGNAMEAming 输出:$LOGNAMEAming

单引号和双引号的区别:
用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。

#开启一个新的shell
当前shell中运行bash指令后,则会进入一个新的shell,这个shell就是原来shell的子shell了。
可以用pstree查看

pstree这个指令会把linux系统中所有进程通过树形结构打印出来。
在父shell中设定一个变量后,进入子shell后该变量是不会生效的,如果想让这个变量在子shell中生效则要用到export指令

#export
export其实就是声明一下这个变量的意思,让该shell的子shell也知道变量abc的值是123.如果export后面不加任何变量名,则它会声明所有的变量。

在最后面连同我们自定义的变量都被声明了。

#如何取消某个变量
unset 变量名
eg: unset myname

#系统环境变量与个人环境变量的配置文件
在linux系统中,这些变量被存到了哪里呢,为什么用户一登陆shell就自动有了这些变量呢?
/etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umas等等。
/etc/bashrc :这个文件主要预设umask以及PS1。这个PS1就是我们在敲命令时,前面那串字符了,例如笔者的linux系统PS1就是 [root@localhost ~]# ,你不妨看一下PS1的值。

\u就是用户,\h 主机名, \W 则是当前目录,\$就是那个’#’了,如果是普通用户则显示为’$’

除了两个系统级别的配置文件外,每个用户的主目录下还有几个这样的隐藏文件:
.bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。
.bash_history :记录命令历史用的。
.bash_logout :当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。