当前位置: 首页 > 知识库问答 >
问题:

什么是shell表单和exec表单?

卢英范
2023-03-14

命令的shell形式和exec形式是什么?
我浏览了几个文档,以便对shell窗体和exec窗体有一个清晰的了解。但在我看来一切都很混乱。有谁能帮忙弄清楚这两种形式有什么区别吗?

ps:虽然我在查看docker文件指令(ex:RUN,CMD,entrypoint)时遇到了这些术语,但我想知道它们之间的一般区别,而不是在docker上下文中。

共有1个答案

秦学林
2023-03-14

docker shell语法(只是作为runentrypointcmd的字符串)将该字符串作为/bin/sh-c的参数运行。这为您提供了一个shell来扩展变量、子命令、管道输出、将命令链接在一起以及其他shell便利性。

RUN ls * | grep $trigger_filename || echo file missing && exit 1

exec语法只运行包含arg的二进制文件,但没有shell解析的任何特性。在docker中,可以使用json格式的数组来指示这一点。

RUN ["/bin/app", "arg1", "arg2"]

exec语法的优点是从启动的进程中删除shell,这可能会抑制信号处理。在shell语法中使用/bin/sh-c重新格式化命令也可能会破坏入口点和cmd的连接。

entrypoint文档很好地涵盖了各种场景,并更详细地解释了这一点。

 类似资料:
  • 问题内容: 什么是命令的shell形式和exec形式? 我仔细阅读了几份文档,以明确了解shell形式和exec形式。但是所有人都对我感到困惑。任何人都可以帮助找出这两种形式之间的区别吗? PS :尽管我在查阅docker文件Instructions()时遇到了这些术语,但我想总体上了解它们之间的区别,而不是在Docker上下文中。 问题答案: 泊坞窗shell语法(这仅仅是一个字符串作为,和)将

  • shell和exec表单的区别是什么? : vs。 : vs。 和: vs。 指令?

  • HTML 表单的主要作用是接收用户的输入,当用户提交表单时,浏览器将用户在表单中输入的数据打包,并发送给服务器,从而实现用户与Web服务器的交互。 表单是控件的容器,一个表单由form元素、表单控件和表单按钮三部分组成: 1) form元素:用来创建表单,并通过 action、method和enctype三个属性,来设置表单的提交路径、提交方式、编码类型。 2) 表单控件:主要用来收集用户数据,包

  • 问题内容: 我知道这些实体和用于和,但是我很好奇这些名称的含义。 是代表“ Left tag ”之类的东西还是仅仅是代码? 问题答案: 代表小于号(<) 代表大于号(>) 代表小于或等于符号(≤) 代表大于或等于符号(≥)

  • 问题内容: 有什么用?我可以在生产环境中运行它以提高性能吗? 问题答案: 更新数据库中所有表的所有统计信息,甚至单行都已更改。它使用默认样本执行此操作,这意味着它不会扫描表中的所有行,因此与其他方法相比,它可能会产生不那么准确的统计信息。 如果您有一个包含“重建索引”的维护计划,它还会刷新统计信息,但会更精确,因为它会扫描所有行。重建索引后无需重建统计信息。 使用命令手动更新特定的统计对象或表可以

  • 问题内容: 我希望能够将Java应用程序中以字符串表示的许多连续命令发送到SSH服务器以执行。我应该使用: -要么- 问题答案: 使用shell通道启动外壳(在Unix上为sh或bash或类似的东西,在Windows上通常为cmd.exe)并创建控制台(如果在本地运行它们,则在屏幕上看到的内容)。您有一个提示,您可以将其解析或用于检测命令是否完成。 使用命令通道,将为每个命令启动一个shell实例