环境配置文件: login, non-login shell, /etc/profile, ~/.bash_profile, source, ~/.bashrc

login 与 non-login shell

    在开始介绍 bash 的配置文件前,我们一定要先知道的就是 login shell 与 non-login shell! 重点在于有没有登入 (login) !
    login shell:取得 bash 时需要完整的登入流程。举例来说,要由 tty1 ~ tty6 登入,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』;

    non-login shell:取得 bash 接口的方法不需要重复登入的举动,举例来说(1)以 X window 登入 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。(2)在原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。

    为什么要介绍 login, non-login shell 呢?这是因为这两个取得 bash 的情况中,读取的配置文件数据并不一样所致。 由于我们需要登入系统,所以先谈谈 login shell 会读取哪些配置文件?一般来说,login shell 其实只会读取这两个配置文件:
1. /etc/profile:这是系统整体的设定,你最好不要修改这个档案;
2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里!

 /etc/profile (login shell 才会读)
你可以使用 vim 去阅读一下这个档案的内容。这个配置文件可以利用使用者的标识符 (UID) 来决定很多重要的变量数据, 这也是每个使用者登入取得 bash 时一定会读取的配置文件! 所以如果你想要帮所有使用者设定整体环境,那就是改这里啰!不过,没事还是不要随便改这个档案喔 这个档案设定的变量主要有:
      PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
      MAIL:依据账号设定好使用者的 mailbox 到 /var/spool/mail/账号名;
      USER:根据用户的账号设定此一变量内容;
      HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
      HISTSIZE:历史命令记录笔数。CentOS 5.x 设定为 1000 ;

/etc/profile 可不止会做这些事而已,他还会去呼叫外部的设定数据喔!比如底下这些数据会依序的被呼叫进来:
/etc/inputrc 
其实这个档案并没有被执行啦!/etc/profile 会主动的判断使用者有没有自定义输入的按键功能,如果没有的话, /etc/profile 就会决定设定『INPUTRC=/etc/inputrc』这个变量!此一档案内容为 bash 的热键、[tab]要不要有声音啦等等的数据! 因为 bash 预设的环境已经很棒了,所以不建议修改这个档案!
/etc/profile.d/*.sh 
其实这是个目录内的众多档案!只要在 /etc/profile.d/ 这个目录内且扩展名为 .sh ,另外,使用者能够具有 r 的权限, 那么该档案就会被 /etc/profile 呼叫进来。这个目录底下的档案规范了 bash 操作接口的颜色、 语系、ll 与 ls 指令的命令别名、vi 的命令别名、which 的命令别名等等。如果需要帮所有使用者设定一些共享的命令别名时, 可以在这个目录底下自行建立扩展名为 .sh 的档案,并将所需要的数据写入即可喔!
/etc/sysconfig/i18n 
这个档案是由 /etc/profile.d/lang.sh 呼叫进来的!这也是我们决定 bash 预设使用何种语系的重要配置文件! 档案里最重要的就是 LANG 这个变量的设定!反正只要记得,bash 的 login shell 情况下所读取的整体环境配置文件其实只有 /etc/profile,但是 /etc/profile 还会呼叫出其他的配置文件,所以让我们的 bash 操作接口变的非常的友善! 接下来,再来瞧瞧,个人偏好的配置文件又是怎么回事?


~/.bash_profile
    bash 在读完了整体环境设定的 /etc/profile 并藉此呼叫其他配置文件后,接下来则是会读取使用者的个人配置文件。 在 login shell 的 bash 环境中,所读取的个人偏好配置文件其实主要有三个,依序分别是:
1. ~/.bash_profile
2. ~/.bash_login
3. ~/.profile
    其实 bash 的 login shell 设定只会读取上面三个档案的其中一个, 而读取的顺序则是依照上面的顺序。也就是说,如果 ~/.bash_profile 存在,那么其他两个档案不论有无存在,都不会被读取。 如果 ~/.bash_profile 不存在才会去读取 ~/.bash_login,而前两者都不存在才会读取 ~/.profile 的意思。 会有这么多的档案,其实是因应其他 shell 转换过来的使用者的习惯而已。 先看一下 root 的 /root/.bash_profile 的内容是怎样呢? 
sz-guessing-db:~ #  cat  ~/.bash_profile
umask 077
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
if [ -f ~/.profile ]; then . ~/.profile; fi
if [ -f ~/.bash_login ]; then . ~/.bash_login; fi


source :读入环境配置文件的指令

由于 /etc/profile 与 ~/.bash_profile 都是在取得 login shell 的时候才会读取的配置文件,所以, 如果将自己的偏好设定写入上述的档案后,通常都是得注销再登入后,该设定才会生效。如果要直接读取配置文件而不注销登入!那就得要利用 source 这个指令了! 
[root@www ~]# source 配置文件档名


范例:将家目录的 ~/.bashrc 的设定读入目前的 bash 环境中
[root@www ~]# source ~/.bashrc                        <==底下这两个指令是一样的! 
[root@www ~]# . ~/.bashrc
利用 source 或小数点 (.) 都可以将配置文件的内容读进来目前的 shell 环境中! 举例来说,我修改了 ~/.bashrc ,那么不需要注销,立即以 source ~/.bashrc 就可以将刚刚最新设定的内容读进来目前的环境中!

    

你可能感兴趣的:(环境配置,profile,source)