[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: using exec to close a fd in a var crashes bash
From: |
Zachary Santer |
Subject: |
Re: using exec to close a fd in a var crashes bash |
Date: |
Wed, 23 Aug 2023 09:50:36 -0400 |
On Wed, Aug 23, 2023 at 1:48 AM Martin D Kealey <martin@kurahaupo.gen.nz>
wrote:
> Chopping and changing behaviour in "permanent" releases creates a
> maintenance nightmare.
>
Well now with Bash 5.2, we've got the varredir_close shell option,
something savvy shell programmers would probably just always use, like
lastpipe.
>From the NEWS file [1]:
o. The new `varredir_close' shell option causes bash to automatically close
file descriptors opened with {var}<fn and other styles of varassign
redirection unless they're arguments to the `exec' builtin.
In the Bash man page:
varredir_close
If set, the shell automatically closes file descriptors assigned
using the {varname} redirection syntax (see REDIRECTION above) instead of
leaving them open when the command completes.
I feel like the man page would benefit from that caveat about exec. I felt
the need to test that bit myself. "Surely not."
$ shopt varredir_close
varredir_close off
$ ls /dev/fd
0 1 2 3
$ printf 'words\n' {fd}>&1 1>&2 2>&$fd {fd}>&-
words
$ ls /dev/fd
0 1 10 2 3
$ exec {fd}>&-
$ ls /dev/fd
0 1 2 3
$ shopt -s varredir_close
$ printf 'words\n' {fd}>&1 1>&2 2>&$fd {fd}>&-
words
$ ls /dev/fd
0 1 2 3
$ exec {fd}> this_file.txt
$ printf 'words\n' >&$fd
$ printf 'other words\n' >&$fd
$ exec {fd}>&-
$ cat this_file.txt
words
other words
Zack
[1]: https://git.savannah.gnu.org/cgit/bash.git/tree/NEWS
- Re: using exec to close a fd in a var crashes bash, (continued)
- Re: using exec to close a fd in a var crashes bash, Grisha Levit, 2023/08/20
- Re: using exec to close a fd in a var crashes bash, Chet Ramey, 2023/08/21
- Re: using exec to close a fd in a var crashes bash, Dale R. Worley, 2023/08/22
- Re: using exec to close a fd in a var crashes bash, Chet Ramey, 2023/08/22
- Re: using exec to close a fd in a var crashes bash, Greg Wooledge, 2023/08/22
- Re: using exec to close a fd in a var crashes bash, Martin D Kealey, 2023/08/22
- Re: using exec to close a fd in a var crashes bash, Greg Wooledge, 2023/08/22
- Re: using exec to close a fd in a var crashes bash, Martin D Kealey, 2023/08/23
- Re: using exec to close a fd in a var crashes bash,
Zachary Santer <=
- Re: using exec to close a fd in a var crashes bash, Greg Wooledge, 2023/08/23
- Re: using exec to close a fd in a var crashes bash, Andreas Schwab, 2023/08/23
- Re: using exec to close a fd in a var crashes bash, Ángel, 2023/08/23
- Re: using exec to close a fd in a var crashes bash, Chet Ramey, 2023/08/25
Re: using exec to close a fd in a var crashes bash, alex xmb ratchev, 2023/08/23