shell脚本中持久化环境变量

引言:在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;

你可能感兴趣的:(shell脚本中持久化环境变量)