mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-01 07:38:46 +00:00
11a373f121
The user may write for example: echo foo >&5 and fish would try to output to file descriptor 5, within the fish process itself. This has unpredictable effects and isn't useful. Make this an error. Note that the reverse is "allowed" but ignored: echo foo 5>&1 this conceptually dup2s stdout to fd 5, but since no builtin writes to fd 5 we ignore it.
82 lines
1.4 KiB
Fish
82 lines
1.4 KiB
Fish
# RUN: %fish -C "set helper %fish_test_helper" %s
|
|
|
|
# Check that we don't leave stray FDs.
|
|
|
|
$helper print_fds
|
|
# CHECK: 0 1 2
|
|
|
|
$helper print_fds 0>&-
|
|
# CHECK: 1 2
|
|
|
|
$helper print_fds 0>&- 2>&-
|
|
# CHECK: 1
|
|
|
|
false | $helper print_fds 0>&-
|
|
# CHECK: 0 1 2
|
|
|
|
$helper print_fds </dev/null
|
|
# CHECK: 0 1 2
|
|
|
|
$helper print_fds </dev/null
|
|
# CHECK: 0 1 2
|
|
|
|
$helper print_fds 3</dev/null
|
|
# CHECK: 0 1 2 3
|
|
|
|
$helper print_fds 5>&2
|
|
# CHECK: 0 1 2 5
|
|
|
|
# This attempts to trip a case where the file opened in fish
|
|
# has the same fd as the redirection. In this case, the dup2
|
|
# does not clear the CLO_EXEC bit.
|
|
|
|
$helper print_fds 4</dev/null
|
|
# CHECK: 0 1 2 4
|
|
|
|
$helper print_fds 5</dev/null
|
|
# CHECK: 0 1 2 5
|
|
|
|
$helper print_fds 6</dev/null
|
|
# CHECK: 0 1 2 6
|
|
|
|
$helper print_fds 7</dev/null
|
|
# CHECK: 0 1 2 7
|
|
|
|
$helper print_fds 8</dev/null
|
|
# CHECK: 0 1 2 8
|
|
|
|
$helper print_fds 9</dev/null
|
|
# CHECK: 0 1 2 9
|
|
|
|
$helper print_fds 10</dev/null
|
|
# CHECK: 0 1 2 10
|
|
|
|
$helper print_fds 11</dev/null
|
|
# CHECK: 0 1 2 11
|
|
|
|
$helper print_fds 12</dev/null
|
|
# CHECK: 0 1 2 12
|
|
|
|
$helper print_fds 13</dev/null
|
|
# CHECK: 0 1 2 13
|
|
|
|
$helper print_fds 14</dev/null
|
|
# CHECK: 0 1 2 14
|
|
|
|
$helper print_fds 15</dev/null
|
|
# CHECK: 0 1 2 15
|
|
|
|
$helper print_fds 16</dev/null
|
|
# CHECK: 0 1 2 16
|
|
|
|
$helper print_fds 17</dev/null
|
|
# CHECK: 0 1 2 17
|
|
|
|
$helper print_fds 18</dev/null
|
|
# CHECK: 0 1 2 18
|
|
|
|
$helper print_fds 19</dev/null
|
|
# CHECK: 0 1 2 19
|
|
|
|
$helper print_fds 20</dev/null
|
|
# CHECK: 0 1 2 20
|