我是靠谱客的博主 疯狂镜子,最近开发中收集的这篇文章主要介绍脚本与环境变量设置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

遇到问题:
在一个脚本文件中定义一个了变量,然后export变量,脚本退出后,设置的环境变量失效。

分析问题:

执行一个脚本时,会先开启一个子shell环境(不知道执行其它程序是不是这样),然后将父shell中的所有系统环境变量复制过来,这个脚本中的语句就 在子shell中执行。(也就是说父shell的环境变量在子shell中可以调用,但反过来就不行,如果在子shell中定义了环境变量,只对该 shell或者它的子shell有效,当该子shell结束时,也可以理解为脚本执行完时,变量消失。)

总结:
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;
2、一个shell中的系统环境变量才会被复制 到子shell中(用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。
3、不用export定义的变量只对该shell有效,对子shell也是无效的。

source与脚本,关于环境变量
为什么一个脚本直接执行和用source执行不一行呢?
manual原文是这样 的:Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename.明白了为什么不一样了吧?直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的。
export是将自定义变量变成系统环境变量。
source的脚本中的环境变量不必要使用export

最后

以上就是疯狂镜子为你收集整理的脚本与环境变量设置的全部内容,希望文章能够帮你解决脚本与环境变量设置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部