fc -e의 종료 상태가 잘못되었습니다.

fc -e의 종료 상태가 잘못되었습니다.

Bash의 내장 명령을 사용하여 이전 명령을 편집하고 호출하려고 하는데 fc, 어떻게든 종료 상태는 작동하지 않았음에도 불구하고 편집이 성공적으로 실패했음을 나타냅니다. 데모:

$ uname
Linux
$ fc -e vi
:q
uname
Linux
$ echo $?
1
$ # Would have expected 0 here: successful re-invocation

에서 man bash:

   fc [-e ename] [-lnr] [first] [last]
   fc -s [pat=rep] [cmd]
          [...]
          If  the  first  form  is  used,  the return value is 0 unless an
          invalid option is encountered or first or last  specify  history
          lines  out  of  range.  If the -e option is supplied, the return
          value is the value of the last command executed or failure if an
          error occurs with the temporary file of commands.  [...]

더 자세히 살펴보면 다음과 같습니다.

$ uname
Linux
$ fc -e true -1  # No-op editor, should succeed.
uname
Linux
$ echo $?
1
$ # Why does this recall, but fail?
$ fc -e false -1 # Editor fails, no command invocation and failure, fine.
$ echo $?
1
$ fc -e rm -1    # This removes the temporary file, should fail, too!?
$ echo $?
0
$ # But actually this is the only branch that causes fc to succeed?!

나에게 fc종료 상태 는그 반대는 아니고.

나는 Ubuntu 14.04.4 LTS의 Bash 4.3.11(1) 릴리스, Ubuntu 16.04 LTS의 Bash 4.3.42(1) 릴리스 및 CentOS 7의 Bash 4.2.46(1) 릴리스에서 이것을 보았습니다. 이 점. 이것은 버그입니까?

답변1

예, 이것은 실수입니다. 이 문제는 2015년 11월에 보고되어 수정되었습니다.http://lists.gnu.org/archive/html/bug-bash/2015-11/msg00107.html

나는 Git 저장소에서만 수정 사항을 확인하지 못했습니다 master. 현재로서는 devel수정 사항이 거기에만 있는 것 같습니다. Bash 버전이 출시되면 이 답변을 업데이트하겠습니다.

관련 정보