Fedora14中的/etc/profile文件解析
分析一下shell脚本之/etc/profile环境变量文件
//pathmunge()shell程序中的一个函数,PATH是linux寻找命令的默认路径,$1一般就代表默认路径,例如:在命令行执行source /etc/profile。$2如果是after,表示路径变为$PATH$1
pathmunge () {
case ${PATH} in
$1)
;;
*)
if [ $2 = after ] ; then
PATH=$PATH$1
else
PATH=$1$PATH
fi
esac
}
//先检查/usr/bin/id是否可执行,后才去检查变量EUID(有效用户标识),如果为NULL,则初始化变量EUID和UID
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
//判断,如果是root用户,则将/sbin、/usr/sbin /usr/local/sbin、/opt/FriendlyARM/toolschain/4.4.3/bin添加到PATH变量中。
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/FriendlyARM/toolschain/4.4.3/bin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
//表示当输入history命令时,最多显示多少命令pwd 命令被连续执行了三次。执行 history 后你会看到三条重复的条目。要剔除这些重复的条目,你可以将 HISTCONTROL 设置为 ignoredups:使用 HISTCONTROL 强制 history 不记住特定的命令,将 HISTCONTROL 设置为 ignorespace,并在不想被记住的命令前面输入一个空格。
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
//将上边初始化的几个变量设为环境变量
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
//PS1是基本提示符,如对于Root用户是#,普通用户是$
//PS2是附属提示符,比如>
//最后删除此脚本中用到的变量和函数
//执行/etc/profile.d/目录下所有脚本文件
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done
//最后删除此脚本中用到的变量和函数
unset i
unset pathmunge