前言

前言

前言

不确定这个问题是否在 Unix Stack 交换的范围内,因为它本质上是理论问题。我愿意将其移动到不同的堆栈交换。

语境

在 Unix 命令提示符下,用户可以键入;按顺序执行多个命令。如果其中一个失败,也不会停止下一个命令的执行。

问题

用户在一次提示执行中可以链接在一起的命令数量的理论限制是多少;

答案1

理论的数量限制命令shell(假设sh这里)可以占用一行是POSIX 标准中定义:

输入文件应为文本文件,除了线路长度不受限制。如果输入文件仅包含零个或多个空白行和注释,sh则应以零退出状态退出。

这意味着 shell 应该能够接受任何单行上的命令数,只要每个单独的命令足够短,不长于execve()功能接受(单个命令的长度,包括参数,以及当前环境的环境变量及其值,总长度必须小于ARG_MAX字节)。

实际上,这是受到 shell 进程的内存资源限制的限制。

相关内容