对话 UNIX: 第 10 部分,定制您的 Shell( 五 )


如果您需要根据正在使用的主机来应用某些首选设置(也就是说,如果系统有特殊的资源,将使用不同的 PATH),那么可以将那些设置放在一个单独的文件中,并且在 Shell 启动的过程中使用 source 来访问它 。如果您选择使用 rsync 来管理您的文件,那么可以在从文件分发列表中省略主机特定的文件 。当然,您还可以创建一个全局的脚本,并使用条件和环境变量 HOSTNAME 以选择合适的设置 。(Shell 将自动地设置 HOSTNAME,并且 HOSTNAME 将捕获完全限定的主机名 。)例如,下面是启动文件中常见的代码片段:
case $HOSTNAME in
 lab.area51.org) 
PATH=/opt/rocketscIEnce/bin:$PATH
PS1='u @ h # $ '
export $PS1;;
 
 alien.area51.org)
PATH=/opt/alien/sw/bin:$PATH;;
 saucer*)
PATH=/opt/saucer/bin:$PATH
PAGER=less
export $PAGER;;
 *)
PATH=/usr/local/bin:$PATH
esac
 
export $PATH
这里采用了一个 switch 语句,以便将 $HOSTNAME 的值与四个可能的值进行比较:lab.area51.org、alien.area51.org,匹配任何以字符串 saucer* 开头的主机名的模式(如 saucer-mars 这样的主机名将匹配;如 sauce.tomato.org 这样的主机名将不能匹配),以及匹配所有其他内容的条件 。在这个示例中,Bash 将星号(*)解释为 Shell 运算符,而不是正则表达式运算符 。当匹配到某种模式时,将执行与该模式相关联的语句 。与其他的 switch 语句不同的是,Bash 的case 仅运行一组语句 。
最后,再来看看其他用户的 Shell 启动文件,从中得到一些灵感同时得到一些经验 。(某些用户对这些文件和他们的 home 目录进行了保护,这将使得您无法浏览到这些内容 。)Joe 是否有一个非常好的、有用的提示符呢?咨询他如何实现相同的事情 。Jeanette 是否有很多加速键或者大量的环境变量集合,以便从实用工具方面补充一些特殊的特性呢?与她聊聊关于她的配置秘诀 。最有效的得到思想和代码的途径就是咨询那些在命令行方面具有丰富经验的行家 。
自定义您的 Shell
喜欢修改软件和创作修改版本的人,联合起来!您可以自定义您的 Shell,在您找到了某个设置或者一系列您所喜欢的设置后,将其保存到启动文件中,并重复地使用它们 。使用 rsync 或者类似的工具,将您的环境从一台计算机传播到另一台计算机 。
您的课程到此全部完成 。请多花些时间练习相关的技能 。

推荐阅读