http://bbs.chinaunix.net/thread-1820174-1-1.html
登录系统时,在进入命令提示符前,系统要做两个工作。键入用户名和密码后,系统检查是否为有效用户,为此需查询/ e t c / p a s s w d文件。如果登录名正确并且密码有效,开始下一步过程,即登录环境。
登陆流程
1、先找出/etc/passwd里面是否有这个帐号?如果没有则退出,如果有,将该帐号对应的UID(User ID)与GID(Group ID)读出来,同时读取shell设置和家目录。
2、核对密码表,查看对应的/etc/shadow文件的设置是否和输入的密码一致。
3、在上一步成功执行的情况下,进入了shell控制阶段了。
登录消息显示数据:/etc/issue 和 /etc/motd
文件/etc/issue里面实现的内容就是我们从tty中登录(没有登录之前)的提示字符串。
文件/etc/motd显示的是我们登录成功后,系统显示的信息
环境变量的系统设置:
/etc/sysconfig/i18n 设置语言
/etc/profile 里面设置了一些比较重要的环境变量。PATH,HOSTNAME,UID之类
/etc/bashrc 这个文件里面有一个比较重要的就是PS1环境变量。决定命令提示符的显示方式
/etc/profile.d/*.sh 这是一个目录。针对bash以及C-shell规范了一些数据。可以自行设计一些具有*.sh的文件名来书写系统的设置值。
~/.bash_profile ~/.bash_login ~/.profile
这三个文件只需要一个即可。一般默认是~/.bahs_profile。之所有有那么多的文件,是因为其他shell用户转过来的习惯。
bash启动时(其他的shell不清楚),依次读取的顺序是~/.bash_profile,~/.bash_login,~/.profile
~/.bashrc
这个是最个性化的设置文件。shell登录时候,最后读取的。每次执行shell脚本的时候都会读取这个文件,所以是最全面,最新的。而刚刚那个文件~/.bash_profile只是在登录的时候才读取一次的。在我的文件中重新设置了一个更加好看的命令提示符。PS1
~/.bash_history
每次登录bash后,bash会先读取这个文件,将所有的历史命令读入内存。和HISTSIZE环境变量的设置值有关系。
~/.bash_logout
注销bash后,系统会给你干的事情。
对于刚才的几个文件我们通常在改变之后用source命令或者.重新读取一遍。
登录shell会读取~/.bash_profile和~/.bashrc两个文件
非登录shell仅仅是读取~/.bashrc文件
stty用法
s t t y用于设置终端特性。要查询现在的s t t y选项,使用stty -a。