2011年7月14日星期四

       文本界面启动 Linux 后,会简单地提示输入用户名和密码。这里目的是让系统除了显示发行版、日期、时间、内核号码等之外,加上某个可变的东西。希望的是每次登录都显示由 fortune 命令产生的随机的谚语。

       这里的提示是由文件 /etc/issue 决定。因此需要的是在每次登录前生成新的 /etc/issue 文件。登录壳程序 (Login Shell) 在每次启动前需要先从配置文件 /etc/profile 读取设置。而 /etc/profile 文件会寻找目录 /etc/profile.d/ 下的所有脚本文件。因此在这个目录下新建一个脚本文件,比如 custome.sh,凭此每次生成新的 /etc/issue 文件。具体做法是:

       对于原先设置好的 /etc/issue 文件,保留其备份。这里我保留在原目录下,需要管理员权限:sudo cp /etc/issue /etc/issue.stable ,备份的名字自然是任意的。

       在 custome.sh 中写(此处不需要#!/bin/sh):

fortune > /tmp/delta
cat /etc/issue.stable /tmp/delta > /etc/issue
rm /tmp/delta

       解释是,用 fortune 命令生成谚语,然后把它拼在原先的备份之后形成新的 /etc/issue 文件。最后只是删除临时文件,意义不大,可以省略。

       但是,仅仅是到这里是仍然达不到目标,障碍在于 /etc/issue 文件的权限要求。这使得第二句命令实际上并不能执行。这里通过 sudo chmod a+w /etc/issue 取消这一限制。需要强调的是,这一做法有违系统安全的要求,只是现实来说其实关系并不大。这样我们的任务就完成了。每次注销后重新登录,系统都会提出一句不同的谚语来。

       类似地,登录成功后,系统的提示由文件 /etc/motd 决定。如果你认为一句谚语应该出现在登录之后而不是之前,那你可以采取类似的做法。事实上,做法是完全一样的。当然,主要的目的是在每次登录获得不同的提示,得到一点新鲜感,也大可以采用其他的手段,而不是简单地使用 fortune 命令。

       总结,简单,生硬,暴力,而且意思不大。

没有评论:

发表评论