shell编程中的“导出”有什么作用? [复制]

2023-12-04

据我所知,无论前面是否有“export”,变量赋值都是相同的。这是为了什么?


导出的变量如$HOME and $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
$

有关详细信息,请参阅该条目export builtin在 GNU Bash 手册中,还有关于命令执行环境 and 环境.

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

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

子 shell 可以更改其自己的任何变量的副本(无论是否导出),并且可能会影响其运行的进程所看到的值,但当然,子 shell 的更改不能影响父 shell 中的变量。

有关子 shell 的一些信息可以在下面找到命令分组 and 命令执行环境在 Bash 手册中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell编程中的“导出”有什么作用? [复制] 的相关文章

  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 获取变量的名称作为输入并使用该名称更改变量

    我从脚本用户那里获取变量的名称作为第一个参数 并将该变量的值回显到控制台 bin bash variablename 1 echo The value of variablename is variablename 这太棒了 我无法开始工作
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • bash中的用户名、密码程序

    我有一个程序 要求用户输入用户名和密码 然后将其存储在文本文件中 第一列是用户名 第二列是密码 我需要一个命令 在用户输入用户名和新密码时替换密码 如下我拥有的 bin bash admin menu Register User echo
  • 将二进制输出从文件输出重定向到 stdout

    我有一个专有的二进制文件 它顽固地接受两个文件作为参数 第一个作为输入 第二个作为输出 我想 构建第一个参数 不创建临时文件 使二进制写入标准输出而不是输出文件 第二个参数 我解决了第一个问题 lt 但不确定第二个参数 我编写了以下脚本 看
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的
  • 如何在 bash 上运行 MySQL 命令?

    以下代码在命令行上运行 mysql user myusername password mypassword database mydatabase execute DROP DATABASE myusername CREATE DATABA
  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 用等号完成命令选项

    我正在尝试为可能需要表单上的长选项的命令编写一个 Bash 完成脚本 option or param value 如果用户已经在命令行上输入了一个选项 则该选项应从完成列表中排除 假设仅在命令行上指定一次给定选项才有意义 这是第一次尝试 m
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui

随机推荐

  • Chrome中如何通过iframe订阅pushManager?

    我可以通过 iframe 注册 Service Worker 当我尝试运行 pushManager subscribe 时 我有 DOMException Registration failed permission denied 此问题仅
  • stdin stdout python:如何重复使用同一输入文件两次?

    我对 Python 很陌生 甚至对 stdin stdout 方法也很陌生 尽管如此 我需要使我的脚本可用于 UNIX 命令 以便可以使用我的脚本一次处理 2 个输入文件 该脚本与命令行参数完美配合 newlist def f1 def f
  • 避免在 ASP.NET MVC 中使用会话状态是一个好习惯吗?如果是,为什么以及如何?

    它没有明确地写在某处 但在阅读了一些关于 ASP NET MVC 的博客后我有这样的感觉 只是好奇 就想在这里问一下 UPDATE 我不是在询问服务器上的内存 存储 RAM 问题 对于他们来说 有一个解决方案可以将会话存储在进程外 我知道
  • WPF MDI 应用程序中的组合根在哪里?

    在传统的 MDI 应用程序中 当命令发生时 例如按下功能区按钮 将创建一些对象 表单 因此它可能是一个组合点 我对此类应用程序中的组合根感到困惑 我在某处读到我们可以使用视图模型定位器看起来像服务定位器图案 如您所知 服务定位器模式受到了一
  • 用户定义的异常是受控异常或非受控异常

    在我的 Web 应用程序中创建了一个用户定义的异常 它扩展为 Exception 它是已检查还是未检查的异常 public class InvalidDataException extends Exception public Invali
  • 我想在 UIAlertView 上显示 UIProgressView

    我想在 UIAlertView 上显示 UIProgressView 以显示文件上传的处理情况 但我搜索了太多 也找到了该链接 但仍然无法做到这一点 我不明白这个 如果有人知道最简单的方法 请告诉我 我在执行此操作时遇到了问题 最终得到了以
  • CSS3 微调器、预加载器

    我想用 CSS3 构建一个动画旋转器 它的行为应该像这样 在最后一个状态之后 它应该像第一个状态一样重新开始 我设法使用此处解释的技术创建圆圈 堆栈溢出问题 现在 怎样才能我在所描述的状态之间设置旋转器的动画 我不知道如何为剪辑矩形属性设置
  • IllegalArgumentException:从视图加载位图时宽度和高度必须 > 0

    我正在尝试使用 ImageViewTouch 这是一个支持捏缩放的库 我可以使用 Canvas 在图像上绘图 但是当我缩放图像时 绘图会消失 为此 我尝试将视图转换为位图并为同一视图设置 theImageBitmap 这是代码 mImage
  • Chrome 自动填充会导致文本字段标签和值的文本框发生冲突

    在 React 中 自动完成 Chrome 值不会立即触发 onChange 事件 因此 在页面初始加载期间 它会导致 MUI TextField Label 和实际值发生冲突 我该如何解决这个问题 尝试了多种方法 InputLabelPr
  • 在元素中创建响应式对角线

    不确定这是否可行 但是如何创建一条从元素左上角到右下角的 1px 对角线 无论该元素的宽度和 或高度如何 您可以通过多种方式做到这一点 1 背景图片 1 1 SVG 您可以直接创建 svg 作为内联代码并使用它来绘制线条 使用它你可以实现漂
  • .NET 反射 - 从实例属性获取声明类类型

    是否可以从属性实例获取类的类型 我尝试了以下方法 var model new MyModel SomeValueForMyProperty Type declaringType model MyProperty GetType Declar
  • 将单词添加到一行的最后一个单词之前

    我想在一行的最后一个单词前面添加一个目录名称 该行具有以下格式 100644 bfadfab6f98b8fa1e9989fe16b2bf0fb13ffd39e 0 IoneFile where I表示一个tab and 表示行尾 该行是由生
  • 如何在 Typescript Enum 中查找具有值的键?

    我想搜索一个具有值的枚举 并获取它的键 这就是我现在所拥有的 private find value MyEnum string for const key in MyEnum if value MyEnum key return key r
  • 如何在 java 中将节点附加到现有 XML 文件

    public static void addALLToXML Collection
  • return 语句上的 Perl 引用和取消引用

    我正在学习 perl 并且有一个与参考文献相关的问题 我正在研究 get id 函数 如果我回来 self gt id 我将得到两个无法运行的数组地址 c 以我的理解 a是参考和 a 是数组并且 a 0 会返回值0吗 这是我第一次在 sta
  • bitParity - 查找整数中的奇数位

    我必须创建一个函数bitParity int x 接受一个整数并返回1如果有奇数个0的位形式为x and 0否则 Ex bitParity 5 0 bitParity 7 1 然而 这很困难 因为我只能使用位运算符来解决这个问题 lt lt
  • 我想在 Rstudio 中更改 --max-ppsize

    我读过了如何在 R 中设置最大 ppsize 我也有同样的问题 我目前在 Rstudio 工作 我需要将 max ppsize 设置为更大的值 这是我的方法 gt setwd C Program Files R R 3 3 1 bin gt
  • Emacs 用增量序列替换正则表达式

    我正在尝试找出一种方法 将文本文件中的字符串替换为增量超过 1 的数字 我正在尝试将以下几行转为这样 result A in S1 S2 txt result A in S1 S2 txt result A in S1 S2 txt res
  • php mPDF,无法设置字体系列和字体大小

    好吧 在花了这么多时间阅读他们的文档和我的测试之后 我决定向 SO 社区寻求帮助 我使用 mPDF 从 HTML 生成 pdf 图书馆工作正常 pdf 已生成等 但我无法根据需要设置字体系列和字体大小 我尝试过的代码 mpdf new mP
  • shell编程中的“导出”有什么作用? [复制]

    这个问题在这里已经有答案了 据我所知 无论前面是否有 export 变量赋值都是相同的 这是为了什么 导出的变量如 HOME and PATH可供 shell 运行的其他程序使用 继承 并将它们导出为环境变量 以及这些其他程序运行的程序等