about summary refs log tree commit diff
path: root/Doc
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2011-08-28 16:38:28 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2011-08-28 16:38:28 +0000
commitca7269e82da4175557b9ed1fc19389f693581b35 (patch)
treef766ffd364b716a47bc383ec9c1356db9a0744ec /Doc
parentc4beabbc643d5cea4f1a54ecc65fe82d25175d56 (diff)
downloadzsh-ca7269e82da4175557b9ed1fc19389f693581b35.tar.gz
zsh-ca7269e82da4175557b9ed1fc19389f693581b35.tar.xz
zsh-ca7269e82da4175557b9ed1fc19389f693581b35.zip
users/16289: don't delete temporary files on disown.
Document.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/Zsh/expn.yo12
1 files changed, 12 insertions, 0 deletions
diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo
index adbc662e6..28d525f14 100644
--- a/Doc/Zsh/expn.yo
+++ b/Doc/Zsh/expn.yo
@@ -471,6 +471,18 @@ example(tt({ paste <LPAR()cut -f1) var(file1)tt(RPAR() <LPAR()cut -f3) var(file2
 The extra processes here are
 spawned from the parent shell which will wait for their completion.
 
+Another problem arises any time a job with a substitution that requires
+a temporary file is disowned by the shell, including the case where
+`tt(&!)' or `tt(&|)' appears at the end of a command containing a
+subsitution.  In that case the temporary file will not be cleaned up as
+the shell no longer has any memory of the job.  A workaround is to use
+a subshell, for example,
+
+example(LPAR()mycmd =(myoutput)RPAR() &!)
+
+as the forked subshell will wait for the command to finish then remove
+the temporary file.
+
 texinode(Parameter Expansion)(Command Substitution)(Process Substitution)(Expansion)
 sect(Parameter Expansion)
 cindex(parameter expansion)