diff options
author | Todd Lyons <tlyons@exim.org> | 2014-07-03 08:32:48 -0700 |
---|---|---|
committer | Todd Lyons <tlyons@exim.org> | 2014-07-03 08:32:48 -0700 |
commit | c13d09b8d3277897243fd25df73718da35cd4e1c (patch) | |
tree | cd7c53757c107146322cd7544ab9436d9e7c218a /doc/doc-docbook | |
parent | 581d7beee57968255234fa6b25b62042152cb826 (diff) |
Enhance documentation of ${run command parsing.
Diffstat (limited to 'doc/doc-docbook')
-rw-r--r-- | doc/doc-docbook/spec.xfpt | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index a1422b09b..795d3a1c1 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -9597,11 +9597,24 @@ expansion item above. {*&<&'string2'&>&*}}*&" .cindex "expansion" "running a command" .cindex "&%run%& expansion item" -The command and its arguments are first expanded separately, and then the -command is run in a separate process, but under the same uid and gid. As in -other command executions from Exim, a shell is not used by default. If you want +.new +The command and its arguments are first expanded as one string. The string is +split apart into individual arguments by spaces, and then the command is run +in a separate process, but under the same uid and gid. As in other command +executions from Exim, a shell is not used by default. If the command requires a shell, you must explicitly code it. +Since the arguments are split by spaces, when there is a variable expansion +which has an empty result, it will cause the situation that the argument will +simply be omitted when the program is actually executed by Exim. If the +script/program requires a specific number of arguments and the expanded +variable could possibly result in this empty expansion, the variable must be +quoted. This is more difficult if the expanded variable itself could result +in a string containing quotes, because it would with the quotes around the +command arguments. A possible guard against this is to wrap the variable in +the &%sg%& operator to change any quote marks to some other character. +.wen + The standard input for the command exists, but is empty. The standard output and standard error are set to the same file descriptor. .cindex "return code" "from &%run%& expansion" |