Bash `sleep` 출력__bp_preexec_invoke_exec

Bash `sleep` 출력__bp_preexec_invoke_exec

배경

더 큰 한 줄 명령을 실행하고 있습니다. 예기치 않게 다음이 출력됩니다(반복당 두 번).

__bp_preexec_invoke_exec "$_"

다음은 제거된 명령입니다(루프에서 다른 활동이 제거됨).

for i in `seq 1 3`; do sleep .1 ; done

참고: 몇 번 사용해 본 후 예상치 못한 출력 인쇄가 갑자기 중단되었습니다.

내가 시도한 것

  • 제거하면 sleep .5예상치 못한 결과가 나오지 않습니다.
  • 방금 실행하면 sleep .5프롬프트가 반환되지만 출력이 없습니다.
  • 구글링을 해봤 __bp_preexec_invoke_exec지만 그것이 내가 하고 있는 일에 어떻게 적용되는지 알 수 없습니다

질문

무엇인가요__bp_preexec_invoke_exec "$_"?

원치 않는 출력을 생성하지 않고 어떻게 실행할 수 있나요?


@gina2x 덕분에 솔루션에 대한 추가 정보:

이것이 출력이다declare -f | grep preexec

    preexec_functions+=(preexec);
    __bp_preexec_interactive_mode="on"
__bp_preexec_invoke_exec ()
    if [[ -z "$__bp_preexec_interactive_mode" ]]; then
            __bp_preexec_interactive_mode="";
        __bp_preexec_interactive_mode="";
    local preexec_function;
    local preexec_ret_value=0;
    for preexec_function in "${preexec_functions[@]}";
        if type -t "$preexec_function" > /dev/null; then
            $preexec_function "$this_command";
            preexec_ret_value="$?";
    __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command"
    if [[ -z "${iterm2_ran_preexec:-}" ]]; then
        __iterm2_preexec "";
    iterm2_ran_preexec="";
__iterm2_preexec ()
    iterm2_ran_preexec="yes";

거기에 "iterm2" 메시지가 많이 표시됩니다(저는 Mac에 있고 iTerm2.app을 사용하고 있습니다).

실제로 Terminal.app을 사용하여 재현하려고 하면 다음과 같은 메시지가 나타납니다.재생산할 수 없다예상치 못한 출력.

훌륭한 재검토 declare -f- 감사합니다!

답변1

__bp_preexec_invoke_exec의 일부인 것 같습니다https://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh. 스크립트에 버그가 있는 것 같습니다.

이 프로젝트는 DEBUG 트랩을 추가하여 bash에 "preexec" 기능을 추가합니다. 테스트하지는 않았지만 보이는 대로 작동하지 않을 수도 있다고 상상할 수 있습니다. 귀하의 환경에 설치되어 있는지 확인하십시오. 다음 방법으로 이를 수행할 수 있습니다 declare -f. 최신 bash에서는 이 프로젝트 대신 PS0를 사용할 수 있는 것 같습니다. 이는 현재 보고 있는 문제 없이 동일한 작업을 수행할 수 있습니다.

답변2

기존 노트북에서 새 노트북으로 데이터를 마이그레이션하는 데 문제가 있습니다. __bp_preexec_invoke_exec다른 것들은 파일에서 정의되고 파생됩니다 ~/.iterm2_shell_integration.bash.

내가 아는 한 정의는 구식이므로 소음이 발생합니다. 최신 버전을 다운로드하려면 아래 링크의 지침을 따르십시오. https://iterm2.com/documentation-shell-integration.html

관련 정보