info xargs says '--max-chars=MAX-CHARS' '-s MAX-CHARS' Use at most MAX-CHARS characters per command line, including the command, initial arguments and any terminating nulls at the ends of the argument strings.
Mention that you mean bytes, not characters. $ echo a 哇|xargs -s 8 xargs: argument line too long a $ echo a b|xargs -s 8 a b Also mention it in man xargs -s max-chars, --max-chars=max-chars Use at most max-chars characters per command line, including the command and initial-arguments and the terminating nulls at the ends of the argument strings. The largest allowed value is system-de‐ pendent, and is calculated as the argument length limit for exec, less the size of your environ‐ ment, less 2048 bytes of headroom. If this value is more than 128KiB, 128Kib is used as the de‐ fault value; otherwise, the default value is the maximum. 1KiB is 1024 bytes. xargs automatically adapts to tighter constraints. (Even though it does mention bytes a little.) (Odd that the man page is more detailed than the Info page.) $ xargs --show-limits < /dev/null Your environment variables take up 1362 bytes POSIX upper limit on argument length (this system): 2093742 POSIX smallest allowable upper limit on argument length (all systems): 4096 Maximum length of command we could actually use: 2092380 Size of command buffer we are actually using: 131072 Maximum parallelism (--max-procs must be no greater): 2147483647 Only the first says bytes. The rest need to too.