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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明,本文所使用的机器是:SUSE Linux Enterprise。 问题定位 这看起来像是环境变量引起的问题,...
    lework阅读 2,967评论 6 11
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,483评论 0 5
  • 一、shell脚本介绍 1.1 开头(环境使用shebang机制) #!/bin/bash 必须写在文件首行 符号...
    优果馥斯阅读 3,400评论 0 1
  • 寒假的时候呀,我好像对我的蛙没啥子兴趣了。蛙崽的回来离家都像是一声“哦”就可以应付,轻描淡写,真真是佛系。 不久前...
    两旧阅读 397评论 2 2
  • 我的荷包又被人偷了,但是我刚刚在酒楼吃光了一桌的酱猪蹄、烧花鸭和蜜汁小排,外加一碗银丝面和半碟桂花糕。 那个勤快精...
    吴也白阅读 424评论 1 15