引言:在Linux系统中,大家都知道
/etc/profile
中的环境变量是对所有用户都生效的,细看一下他的源码,就能可以知道,它会加载/etc/profile.d/*
下的所有文件
-
/etc/profile源码(部分)
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
-
shell脚本中间接实现持久化环境变量
原因:由于shell脚本运行完后,它针对的环境变量的操作设置就又回退到当前TTY了,具体实现,就是变一下逻辑就可以了,代码如下。
- 系统ENV > 局部ENV(脚本)
- 局部ENV更改,在程序运行完后就又回退了
#!/bin/bash
source /etc/profile
echo $SHENJIAN_INIT
if [ ! -n "$SHENJIAN_INIT" ] ; then
echo "start init config...";
touch /etc/profile.d/shenjian-init.sh
sleep 2
echo '#/bin/bash' >> /etc/profile.d/shenjian-init.sh
echo 'SHENJIAN_INIT="init_success"' >> /etc/profile.d/shenjian-init.sh
echo "end init config"
fi;
网友评论