shell编程:export导出变量在shell和Makefile中差异

在Makefile和Shell中,export命令的作用确实有一定的相似性,但具体的使用场景和效果有所不同。

在Shell中

  • export命令用于将变量或函数导出到子进程的环境中。当一个变量被导出后,任何由当前Shell启动的子进程都可以访问这个变量的值。
  • 导出变量主要用于环境变量的设置或修改,确保这些变量在Shell会话以及所有后续子进程中都可用。
  • 导出函数虽然不常见,但在某些情况下也是可能的,但需要注意函数只能在相同类型的Shell中导出和导入。

在Makefile中

  • export命令用于将Makefile中的变量导出到由Makefile启动的子进程中,特别是用于编译过程中启动的任何子Shell或程序。
  • 当在Makefile中导出一个变量时,任何由make启动的子进程(比如调用的shell脚本或其他程序)都将能够访问该环境变量。
  • 导出变量的主要目的是确保在编译过程中,所有的子进程都能访问到必要的环境变量,以保持环境的一致性并简化Makefile的管理。

差异与共同点

  • 共同点:两者都用于向子进程或子目录(在Makefile中更准确地说是子make进程)导出变量或设置环境变量。

  • 差异

    • 作用范围:Shell中的export作用于当前Shell会话及其所有后续子进程;Makefile中的export则作用于由Makefile启动的子make进程或子Shell脚本。
    • 使用场景:Shell中的export更侧重于环境变量的设置和管理;Makefile中的export更侧重于编译过程中环境变量的传递和保持环境的一致性。
    • 语法细节:虽然两者都使用export关键字,但在Makefile中,export后面直接跟变量名(可以包含赋值),而在Shell中,通常先设置变量值,然后使用export命令导出。

综上所述,export在Makefile和Shell中虽然作用类似,但具体的使用场景、作用范围和语法细节有所不同。在实际使用中,需要根据具体的上下文和需求来选择合适的命令和用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值