From 2bbcc5cbc80966d80576d1c30c14442ef6a6268e Mon Sep 17 00:00:00 2001 From: Kurtis Rader Date: Tue, 1 Aug 2017 16:46:02 -0700 Subject: [PATCH] document command substitution data limit --- doc_src/index.hdr.in | 4 +++- doc_src/read.txt | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc_src/index.hdr.in b/doc_src/index.hdr.in index 51f021d64..15abeb535 100644 --- a/doc_src/index.hdr.in +++ b/doc_src/index.hdr.in @@ -470,10 +470,12 @@ end The output of a series of commands can be used as the parameters to another command. If a parameter contains a set of parenthesis, the text enclosed by the parenthesis will be interpreted as a list of commands. On expansion, this list is executed, and substituted by the output. If the output is more than one line long, each line will be expanded to a new parameter. Setting `IFS` to the empty string will disable line splitting. -The exit status of the last run command substitution is available in the status variable. +The exit status of the last run command substitution is available in the status variable if the substitution occurs in the context of a `set` command. Only part of the output can be used, see index range expansion for details. +Fish has a default limit of 10 MiB on the amount of data a command substitution can output. If the limit is exceeded the entire command, not just the substitution, is failed and `$status` is set to 122. You can modify the limit by setting the `FISH_READ_BYTE_LIMIT` variable at any time including in the environment before fish starts running. This is a safety mechanism to keep the shell from consuming an too much memory if a command outputs an unreasonable amount of data. Note that this limit also affects how much data the `read` command will process. + Examples: \fish diff --git a/doc_src/read.txt b/doc_src/read.txt index 32381a6d8..ffc02d21a 100644 --- a/doc_src/read.txt +++ b/doc_src/read.txt @@ -49,7 +49,7 @@ See the documentation for `set` for more details on the scoping rules for variab When read reaches the end-of-file (EOF) instead of the separator, it sets `$status` to 1. If not, it sets it to 0. -Fish has a default limit of 10 MiB on the number of characters each `read` will consume. If you attempt to read more than that `$status` is set to 122 and the variable will be empty. You can modify that limit by setting the `FISH_READ_BYTE_LIMIT` variable at any time including in the environment before fish starts running. This is a safety mechanism to keep the shell from consuming an unreasonable amount of memory if the input is malformed. +Fish has a default limit of 10 MiB on the number of characters each `read` will consume. If you attempt to read more than that `$status` is set to 122 and the variable will be empty. You can modify that limit by setting the `FISH_READ_BYTE_LIMIT` variable at any time including in the environment before fish starts running. This is a safety mechanism to keep the shell from consuming an unreasonable amount of memory if the input is malformed. Note that this limit also affects how much data a command substitution is allowed to output. \subsection read-history Using another read history file