发布时间:2015-02-02 18:28:43作者:知识屋
1、在开始介绍 bash 的配置文件前,我们一定要先知道的就是 login shell 语 non-login shell!
login shell:取得 bash 时需要完整的登录流程的,就称为 login shell。举例来说,你要由 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 的情况中,读取的配置文件数据并不一样所致。
2、login shell 下读取的配置文件
一般来说,loginshell 其实只会读取这两个配置文件:
1. /etc/profile:这是系统整体的设定,你最好不要修改这个档案;
2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人设定,你要改自己的数据,就写入这里!
/etc/profile (login shell 才会读)
这个配置文件可以利用使用者的标识符 (UID) 来决定很多重要的变量数据, 这也是每个使用者登入取得 bash 时一定会读取的配置文件! 所以如果你想要帮所有
使用者设定整体环境,那就是改这里 !不过,没事还是不要随便改这个档案喔 这个档案设定的变量主要有:
PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
MAIL:依据账号设定好使用者的 mailbox 到 /var/spool/mail/账号名;
USER:根据用户的账号设定此一变量内容;
HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
HISTSIZE:历史命令记录笔数。CentOS 5.x 设定为 1000 ;
etc/profile 可不止会做这些事而已,他还会去呼叫外部的设定数据!在 CentOS 5.x 默认的情况下,底下这些数据会依序的被呼叫进来:
/etc/inputrc
其实这个档案并没有被执行!/etc/profile 会主动的判断使用者有没有自定义输入的按键功
能,如果没有的话, /etc/profile 就会决定设定『INPUTRC=/etc/inputrc』这个变量!此一档
案内容为 bash 的热键、[tab]要不要有声音等等的数据! 个人觉得 bash 预设的环境已
经很棒了,所以不建议修改这个档案!
/etc/sysconfig/i18n
这个档案是由 /etc/profile.d/lang.sh 呼叫进来的!这也是我们决定 bash 预设使用何种语系的重
要配置文件! 档案里最重要的就是 LANG 这个变量的设定
反正你只要记得,bash 的 login shell 情况下所读取的整体环境配置文件其实只有 /etc/profile,但是/etc/profile 还会呼叫出其他的配置文件,
那么个人偏好的配置文件又是怎么回事?
~/.bash_profile (login shell 才会读)
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 转换过来的使用者的习惯而已。
在CentOS 的 login shell 环境下,最终被读取的配置文件是『 ~/.bashrc 』这个档案!所以,你当然可以将自己的偏好设定写入该档案即可。
3、non-login shell 下读取的配置文件
谈完了 login shell 后,那么 non-login shell 这种非登录情况取得 bash 操作接口的环境配置文件又是
什么? 当你取得 non-login shell 时,该 bash 配置文件仅会读取 ~/.bashrc 而已,在CentOS 5.x 这个文件还会主动的呼叫 /etc/bashrc 这个档案喔!
为什么需要呼叫 /etc/bashrc 呢? 因为 /etc/bashrc 帮我们的 bash 定义出底下的数据:
a、依据不同的 UID 规范出 umask 的值;
b、依据不同的 UID 规范出提示字符 (就是 PS1 变量);
c、呼叫 /etc/profile.d/*.sh 的设定
你要注意的是,这个 /etc/bashrc 是 CentOS 特有的 (其实是 Red Hat 系统特有的),其他不同的distributions 可能会放置在不同的文件名
4、其他相关配置文件
/etc/man.config
这的档案的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!』.说的
简单一点,这个档案规定了下达 man 的时候,该去哪里查看数据的路径设定!
另外,要注意的是, 这个档案在各大不同版本 Linux
distributions 中,档名都不太相同,例如 CentOS 用的是 /etc/man.config ,而 SuSE 用的则是
/etc/manpath.config
~/.bash_history
预设的情况下, 我们的历史命令就记录在这里!而
这个档案能够记录几笔数据,则与 HISTFILESIZE 这个变数有关。每次登入 bash 后,bash 会
先读取这个档案,将所有的历史指令读入内存, 因此,当我们登入 bash 后就可以查知上次使用
过哪些指令。
~/.bash_logout
这个档案则记录了『当我注销 bash 后,系统再帮我做完什么动作后才离开』的意思。 你可以去
读取一下这个档案的内容,预设的情况下,注销时, bash 只是帮我们清掉屏幕的讯息而已。 不
过,你也可以将一些备份或者是其他你认为重要的工作写在这个档案中 (例如清空暂存盘), 那么
当你离开 Linux 的时候,就可以解决一些烦人的事情!
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能