Fedora14中的/etc/profile资料解析

Fedora14中的/etc/profile文件解析

Fedora14中的/etc/profile文件解析

分析一下shell脚本之/etc/profile环境变量文件

//pathmunge()shell程序中的一个函数,PATHlinux寻找命令的默认路径$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