linux,centos7.2,/etc/profile文件详解
程序员文章站
2022-06-03 22:46:56
...
/etc/profile
Linux是一个多用户的操作系统,每个用户登录系统后,都会有一个运行环境。打个比喻,一群人圣诞节这一天要去拍照,摄影师给每个人都发了一个红帽子,绿衣服,这是标配。当然你觉得红帽子和绿衣服太单调的话,也可以选择给自己加个星星,加个长筒袜之类的。那么摄影师做的统一分配就是/etc/profile这个文件所起到的作用,修改这个文件里面的内容是对所有用户起作用的。
[[email protected] ~]# cat /etc/profile
pathmunge函数的作用是将一个路径添加到PATH变量中,如果PATH变量中已有此路径则不作操作
pathmunge () {
case ": ${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
设置用户的EUID, 标识实际的登录用户ID, 对于root用户, id默认为0
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用户,则将/usr/sbin /usr/local/sbin添加到PATH变量中
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
初始化HOSTNAME
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
当输入history命令时,最多显示多少命令
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth #在不想被记住的命令前面输入一个空格,该命令就不会出现在历史记录中
else
export HISTCONTROL=ignoredups #剔除历史记录的命令中连续的重复条目
fi
将上边初始化的几个变量设为环境变量
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
将上边初始加粗样式化的几个变量设为环境变量
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002普通用户umask
else
umask 022 root用户umask
fi
对/etc/profile.d/下.sh结尾的文件进行循环
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then 如果该文件可读
if [ "${-#*i}" != "$-" ]; then 如果$-变量中包含i
. "$i" 使用当前SHELL直接执行该文件
else
. "$i" >/dev/null 否则将执行结果抛弃
fi
fi
done
unset i 最后删除此脚本中用到的变量和函数
unset -f pathmunge
export LANG=C 和语言相关的环境变量
PATH: 决定了shell将到哪些目录中寻找命令或程序
export PATH=/home/buildmgr/bin5.6/mercurial-scripts/bin:/ap/local/devtools/bin:$PATH
export HGHOME=/home/buildmgr/bin5.6
export [email protected],asblx18,fnlx14
export GHS_LMWHICH=ghs
fi
上一篇: ofo应获国家嘉奖,他让中国人学会了排队
下一篇: GO语言多项目开发环境搭建