在shell中,可以使用export修改当前进程的环境变量。

例如:export PATH=.:$PATH

将当前路径加入可执行文件查找路径(PATH)中,这样你就不要敲“./excutable” 来执行当前路径中的excutable。而只需要键入 “excutable” 就行了。

make可以执行shell命令,当然也包括export。同时,make本身的语法,也含有export操作符。这样,在同一个Makefile中,两个export可能遵循完全不同的语法,shell命令语法和make语法,他们的作用也就完全不同。

1)Makefile中shell版export

小标题的意思是,这里的export是shell命令。它通常包含在Makefile的规则中,成为某规则的命令行的一部分。

例如:

init:
             export DEBUG=1
             ……
             ……
         run: init
             ./myapp
    第一条init规则的本意是设置环境变量DEBUG=1(可能作者想让以后启动的程序myapps在Debug模式下运行)。

但是上述规则没有起到作者想要的作用:对后来启动的程序apps来说,DEBUG并没有改变。原因何在?
    首先,上面export行是shell命令;对每一行shell命令,make将启动一个新的进程执行这行shell命令

由于新启动的子进程的环境变量完全跟父进程不相干,因此export并不能改变父进程的环境变量,进而也不能改变父进程以后启动的子进程,或曰“弟弟进程”的环境变量。

正确的写法应该是:
         run:
             export DEBUG=1 && ./myapp
    或者:
         run:
             env DEBUG=1 ./myapp

2)Makefile中make版export

同上,小标题的意思是,这里的export完全是make语法中的操作符。它通常是用来向后来发起的make进程(这些后起的make进程由当前的make进程启动)传送变量

例如:

recursively_build:
             $(MAKE) –c arch/src/ arch=x86_64
    而arch变量是文件arch/src/Makefile中的一个关键的开关变量,它将决定哪一种architecture的源文件将被编译链接。

为了将变量arch传递给将要处理arch/src/Makefile的子make进程,需要用export:
             export arch
    这里的export出来的变量arch将被子make进程继承。

最新文章

  1. 删除mysql binlog日志
  2. java内存划分
  3. MVC中使用SignaIR入门教程
  4. oracle中SET DEFINE意思
  5. js 对象 copy 对象
  6. JSBinding + SharpKit / JavaScript 加载流程
  7. 如何重装air
  8. yii2.0 事务
  9. 关于使用Exception的一点心得
  10. python 时间处理(time和datetime介绍)
  11. [iOS基础控件 - 6.10.3] DatePicker & UIToolBar
  12. View事件分发机制
  13. smali 语法基础
  14. C/C++基础知识总结——数据的共享与保护
  15. 初识beego
  16. python3之File文件方法
  17. 用.Net Core控制台模拟一个ASP.Net Core的管道模型
  18. 做一个有产品思维的研发:Scrapy安装
  19. Android 工程中各种文件的介绍
  20. .NET Core开发日志——WCF Client

热门文章

  1. [原][qt]解决qt在vs下could not find or load the Qt platform plugin "windows" in ""问题
  2. P481tabtenn0
  3. 第 6 章 存储 - 044 - volume 生命周期管理
  4. 子数组最小值的总和 Sum of Subarray Minimums
  5. laravel配置路由除了 / 都是404解决办法
  6. 协方差分析 | ANCOVA (Analysis of Covariance)
  7. LeetCode--235--二叉树的最近公共祖先
  8. 基于windows使用fabric将gitlab的文件远程同步到服务器(本地)
  9. matlab:统计矩阵中某元素的个数
  10. chrome 浏览器去掉输入框背景透明色