linux管理任务: 环境调优

来源:百度文库 编辑:神马文学网 时间:2024/05/06 11:38:54
LPI 102 考试准备,主题 111: 管理任务
初级管理(LPIC-1)主题 111

第 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),并将提示相应地设置为 # 或 $。
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、脚本、编程和编译” 详细描述了设置和取消环境变量所用的命令,还介绍了如何以及何时使用各个配置文件。
在为用户定制环境时,要注意两个重要问题:
系统只在用户登录时读取 /etc/profile,所以在创建每个新 shell 时并不执行它。 新 shell 并不继承函数和别名。因此,常常要根据自己的需要在 /etc/bashrc 中或用户自己的配置文件中设置环境变量。
除了系统配置文件 /etc/profile 和 /etc/bashrc 之外,Linux Standard Base(LSB)还指定其他脚本可以放在 /etc/profile.d 目录中。当创建交互式登录 shell 时,会执行这些脚本。它们提供了将不同程序的定制设置分隔开的简便方法。清单 15 给出一个示例。
[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 选项会显示任何符号链接。
[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。在不同的版本或不同的发行版上,这个文件可能不一样,但是它说明了默认用户设置是如何建立的。
# .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 脚本。
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。
PATH="$PATH${PATH:+:}/opt/productxyz/bin" PATH="/opt/productxyz/bin${PATH:+:}$PATH"
表达式 ${PATH:+:} 不是必需的;如果 PATH 变量未设置或者为空,它就插入一个路径分隔符(冒号)。