3.3 shell启动
当Linux系统启动完毕后,在活动终端上为用户启动登录进程,并等待用户登录。在用户登录时要输入用户名和用户密码,当用户名和密码经系统认证后,系统启动shell供用户使用,默认情况下系统出现提示符为#或$。一旦出现了shell提示符,用户就可以输入命令名及命令所需要的参数,由shell解释并执行。当用户完成所需任务后可以通过注销的办法退出shell,系统再回到登录界面。
3.3.1 登录shell的启动流程和工作过程
登录shell的启动流程和工作过程如图3-2所示。
图3-2 shell的启动流程和工作过程
在用户登录过程中,输入用户名和密码后,系统要检查以下文件:
(1)/etc/passwd,系统用户数据库。
(2)/etc/shadow,影子密码和用户登录控制文件。
(3)/etc/group,系统组定义文件。
如果用户名和密码合法,则启动shell,否则要求用户重新输入用户名和密码。
在系统启动shell过程中,依次进行以下操作:
(1)执行系统profile文件/etc/profile(并在它的控制下执行/etc/profile.d/目录的*.sh脚本文件)。
(2)执行用户profile文件~/.bash_profile。
(3)如果~/.bashrc存在,则执行。
(4)如果/etc/bashrc文件存在,则执行。
需要说明的是,以上步骤都是在当前shell内执行的(参见第10章),目的是为用户设置环境变量或做相关准备。一切执行完毕之后出现系统提示符。
3.3.2 修改profile文件
根据用户登录和shell的启动过程可以看出,用户可在shell的启动过程加入自己的内容,如设置自己所需的环境变量。用户也可以在.bashrc和.bash_profile中加入自己的内容,一般是放在文件的最后,使其在一切都准备之后执行。这样可以使用户在登录之后就进入某个规定程序,当其退出时用户也随之注销。因此,可让用户只在某个规定封闭环境下工作,而不让其真正进入系统,同时也看不到系统的提示符,从而提高了系统的安全性。