加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – shell编程中的“导出”是做什么的?

发布时间:2020-12-16 01:40:26 所属栏目:安全 来源:网络整理
导读:参见英文答案 Defining a variable with or without export????????????????????????????????????14个 据我所知,变量赋值是相同的,无论它是否在“export”之前.这是为了什么? 解决方法 导出变量(如$HOME和$PATH)可用于(由其继承)由其导出的shell运行的其他
参见英文答案 > Defining a variable with or without export????????????????????????????????????14个
据我所知,变量赋值是相同的,无论它是否在“export”之前.这是为了什么?

解决方法

导出变量(如$HOME和$PATH)可用于(由其继承)由其导出的shell运行的其他程序(以及由其他程序运行的程序,等等)作为环境变量.常规(非导出)变量不可用于其他程序.

$env | grep '^variable='
$                                # No environment variable called variable
$variable=Hello                  # Create local (non-exported) variable with value
$env | grep '^variable='
$                                # Still no environment variable called variable
$export variable                 # Mark variable for export to child processes
$env | grep '^variable='
variable=Hello
$
$export other_variable=Goodbye   # create and initialize exported variable
$env | grep '^other_variable='
other_variable=Goodbye
$

有关更多信息,请参阅GNU Bash手册中的export builtin条目,以及command execution environment和environment中的部分.

请注意,未导出的变量可用于通过(…)和类似符号运行的子shell,因为这些子shell是主shell的直接克隆:

$othervar=present
$(echo $othervar; echo $variable; variable=elephant; echo $variable)
present
Hello
elephant
$echo $variable
Hello
$

子shell可以更改自己的任何变量的副本,导出与否,并且可能会影响它运行的进程所看到的值,但子shell的更改当然不会影响父shell中的变量.

有关子壳的一些信息可以在Bash手册的command grouping和command execution environment中找到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读