zoukankan      html  css  js  c++  java
  • 脚本与环境变量设置

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

  • 相关阅读:
    python class属性
    获取安卓系统日志输出
    深入理解C#中的IDisposable接口(转)
    Mac开启自带的Apache服务器
    【转】《Unity Shader入门精要》冯乐乐著 书中彩图
    AssetDatabase的方法总结
    C# 读写XML文件的方法
    tkinter模块常用参数(python3)
    Unity在Project视图里面显示文件的拓展名
    Git忽略提交规则
  • 原文地址:https://www.cnblogs.com/davy2013/p/3131551.html
Copyright © 2011-2022 走看看