rob*_*dog 46 linux command-line-interface
我正在将变量传递给命令行上的脚本。命令的字符限制是多少?例如:
$ MyScript reallyreallyreally...reallyreallyreallylongoption
Run Code Online (Sandbox Code Playgroud)
谢谢。
Dav*_*ett 49
shell/OS 强加的限制通常是一到二十万个字符。
getconf ARG_MAX将为您提供命令的最大输入限制。在 Debian 系统上,我目前在返回时打开了一个终端,131072它是128*1024. 您的环境变量会减少限制,如果我没记错的话,这些会由 shell 以相同的结构传递,尽管在大多数情况下只会减少几百个字符。要找到此值的近似值,请运行env | wc -c- 这建议在当前时间在此计算机上登录时使用 325 个字符。
脚本可能会允许这种完整长度,但其他实用程序也不太可能有意或通过设计问题强加自己的限制。对于长命令行上的单个参数的长度和/或文件路径的长度,也可能存在人为限制。
小智 6
xargs提供了另一种方法来获取有关命令行长度限制的详细信息,包括系统的理论最大值、可用最大值、POSIX 指定的最小值以及当前缓冲区大小限制。
您可以通过不提供任何输入xargs并提供选项来完成此操作--show-limits。手册页还建议提供该--no-run-if-empty选项(GNU 扩展)。
使用/输出示例
$ xargs --no-run-if-empty --show-limits </dev/null
Your environment variables take up 3643 bytes
POSIX upper limit on argument length (this system): 2091461
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2087818
Size of command buffer we are actually using: 131072
Maximum parallelism (--max-procs must be no greater): 2147483647
Run Code Online (Sandbox Code Playgroud)