• 脚本与环境变量设置


    遇到问题:
    在一个脚本文件中定义一个了变量,然后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

  • 相关阅读:
    动态内存有那几个?
    Swift的可选的和可选链
    结构的声明
    指针的理解
    类的初始化分析要点代码
    Swift属性的理解和代码
    swift基本类型
    Swift的下标代码
    Swift枚举代码
    mysql 修改编码格式
  • 原文地址:https://www.cnblogs.com/davy2013/p/3131551.html
Copyright © 2020-2023  润新知