linux系统中有很多系统变量,那么这些变量都存在哪里呢?为什么用户一登录shell就自动有了这些变量呢?下面将介绍几个配置文件。

    1、/etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等等。可以编辑文件在这个文件中增加变量,但是不建议这么做。如果需要更改变量或者增加变量我们可以在/etc/profile.d/这个目录下新建脚本,例如更改变量PATH,增加一个/tmp/:首先vim /etc/profile.d/path.sh 建立脚本文件,编辑内容为:

    #!/bin/bash

    export PATH=$PATH:/tmp/

保存退出后运行命令:source /etc/profile刷新配置就可以了。

    2、/etc/bashrc:这个文件主要预设umask以及PS1。这个PS1就是我们在输入命令时的前缀,例如

“[root@localhost ~]# ”就是PS1。我们看一下PS1的值:

    # echo $PS1

    [\u@\h \W]\$ 

    其中,\u指用户,\h指主机名,\W指当前目录,\$指字符“#”(如果是普通用户则显示为“$”)我们可以更改这个变量从而改变前缀。

    除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。

    .bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。注意:.bash_profile会调用.bashrc,如果我们在这两个文件中都定义了相同的变量后执行的变量会覆盖先执行的变量。

    .bashrc:该文件包含专属于自己shell的bash信息,当登录或每次打开新的的shell时,该文件被读取。例如我们可以将用户自定义的alias或者自定义的变量写到这个文件中。

    .bash_history:该文件用于记录命令历史。

    .bash_logout:当退出shell时,会执行该文件。我们可以将一些清理的命令写到这个文件中。