分享

linux管理任务: 环境调优

 dazheng 2007-08-23

LPI 102 考试准备,主题 111: 管理任务

初级管理(LPIC-1)主题 111

developerWorks
第 3 页,共 10 页


对本教程的评价

帮助我们改进这些内容


环境调优

本节介绍初级管理(LPIC-1)考试 102 的 1.111.2 主题的内容。这个主题的权值为 3。

在本节中,学习如何对用户环境进行调优,包括以下任务:

  • 设置和取消环境变量
  • 为新用户帐户维护框架目录
  • 设置命令搜索路径

设置和取消环境变量

在创建新用户时,常常根据自己的需要对许多变量进行初始化。这些变量常常是在为新用户提供的配置文件中设置的,比如 .bash_profile 和 .bashrc,也可以在系统范围的配置文件 /etc/profile 和 /etc/bashrc 中设置。清单 14 演示如何在 Ubuntu 7.04 系统上的 /etc/profile 中设置 PS1 系统提示。第一个 if 语句检查是否设置了 PS1 变量(这表示一个交互式 shell),因为非交互式 shell 不需要提示。第二个 if 语句检查是否设置了 BASH 环境变量。如果设置了,那么设置一个复杂的提示和源 /etc/bash.bashrc(注意点号)。如果没有设置 BASH 变量,对根进行检查(id=0),并将提示相应地设置为 # 或 $。


清单 14. 设置环境变量
                        if [ "$PS1" ]; then
                        if [ "$BASH" ]; then
                        PS1=‘\u@\h:\w\$ ‘
                        if [ -f /etc/bash.bashrc ]; then
                        . /etc/bash.bashrc
                        fi
                        else
                        if [ "`id -u`" -eq 0 ]; then
                        PS1=‘# ‘
                        else
                        PS1=‘$ ‘
                        fi
                        fi
                        fi
                        

教程 “LPI 102 考试准备:shell、脚本、编程和编译” 详细描述了设置和取消环境变量所用的命令,还介绍了如何以及何时使用各个配置文件。

在为用户定制环境时,要注意两个重要问题:

  1. 系统只在用户登录时读取 /etc/profile,所以在创建每个新 shell 时并不执行它。
  2. 新 shell 并不继承函数和别名。因此,常常要根据自己的需要在 /etc/bashrc 中或用户自己的配置文件中设置环境变量。

除了系统配置文件 /etc/profile 和 /etc/bashrc 之外,Linux Standard Base(LSB)还指定其他脚本可以放在 /etc/profile.d 目录中。当创建交互式登录 shell 时,会执行这些脚本。它们提供了将不同程序的定制设置分隔开的简便方法。清单 15 给出一个示例。


清单 15. Fedora 7 上的 /etc/profile.d/vim.sh
                        [if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
                        [ -x //usr/bin/id ] || return
                        [ `//usr/bin/id -u` -le 100 ] && return
                        # for bash and zsh, only if no alias is already set
                        alias vi >/dev/null 2>&1 || alias vi=vim
                        fi
                        

请记住,应该常常对配置文件中设置的变量执行 export;否则,它们不会对新 shell 中运行的命令生效。





回页首


为新用户维护框架目录

在 “添加和删除用户和组” 一节中,您学习了如何为用户创建和填充新的主目录。这个新目录的内容来自以 /etc/skel 为根的子目录树。清单 16 显示 Fedora 7 系统上这个子树中的文件。注意,大多数文件以点号开头,所以需要用 -a 选项才能在目录列表中列出它们。-R 选项递归地列出子目录,-L 选项会显示任何符号链接。


清单 16. Fedora 7 上的 /etc/skel
                        [ian@lyrebird ~]$ ls -aRL /etc/skel
                        /etc/skel:
                        .  ..  .bash_logout  .bash_profile  .bashrc  .emacs  .xemacs
                        /etc/skel/.xemacs:
                        .  ..  init.el
                        

除了 Bash shell 所需的 .bash_logout、.bash_profile 和 .bashrc 之外,这个示例还包含 emacs 和 xemacs 编辑器的配置文件信息。如果需要了解各个配置文件的功能,请参考教程 “LPI 102 考试准备:shell、脚本、编程和编译

清单 17 显示以上系统中的 /etc/skel/.bashrc。在不同的版本或不同的发行版上,这个文件可能不一样,但是它说明了默认用户设置是如何建立的。


清单 17. Fedora 7 上的 /etc/skel/.bashrc
                        # .bashrc
                        # Source global definitions
                        if [ -f /etc/bashrc ]; then
                        . /etc/bashrc
                        fi
                        # User specific aliases and functions
                        

可以看到,首先执行全局 /etc/bashrc,然后可以添加用户特有的指令。清单 18 给出 /etc/bashrc 中的一部分,它执行 /etc/profile.d 中的 .sh 脚本。


清单 18. 执行 /etc/profile.d 中的 .sh 脚本
                        for i in /etc/profile.d/*.sh; do
                        if [ -r "$i" ]; then
                        . $i
                        fi
                        done
                        unset i
                        

注意,在循环之后取消了变量 i。





回页首


设置命令搜索路径

默认的配置文件常常包含本地功能或安装的产品的 PATH 变量。可以在 /etc/skel 中的骨架文件中设置这些变量,或者通过修改 /etc/profile 和 /etc/bashrc 或在 /etc/profile.d 中创建文件来设置这些变量。如果修改了系统文件,那么在任何系统更新之后,都要检查您的修改是否保持不变。清单 19 演示如何在现有的 PATH 之前或之后添加一个新目录 /opt/productxyz/bin。


清单 19. 添加路径目录
                        PATH="$PATH${PATH:+:}/opt/productxyz/bin"
                        PATH="/opt/productxyz/bin${PATH:+:}$PATH"
                        

表达式 ${PATH:+:} 不是必需的;如果 PATH 变量未设置或者为空,它就插入一个路径分隔符(冒号)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多