이를 사용하면 set -x
쉘이 관련 없는 내용을 인쇄하게 됩니다. 예를 들어:
$ set -x
++ printf $'%157s\r'
$ echo 'hello'
+ echo hello
hello
++ printf $'%157s\r'
"++"로 시작하는 줄은 추가입니다. 이러한 추가 줄을 어떻게 제거할 수 있나요?
답변1
-x
깃발엄밀히 말하면 "상세"하지는 않습니다., 그것은:
쉘은 명령을 확장한 후 명령을 실행하기 전에 각 명령의 추적을 표준 오류에 기록해야 합니다.
++
이는 프롬프트를 고려할 때 이 추적 라인이 쉘 자체 내부 처리에서 나온다는 것을 의미합니다. 그것은아마도다음에서는 어떤 일이 발생합니까? PROMPT_COMMAND
이 경우 다음을 실행하면:
PROMPT_COMMAND=
set -x
그러면 추가 출력이 발생하지 않습니다.
이를 유발하는 다른 구성이 있을 수도 있습니다. Bash에는 많은 프롬프트 설정이 있습니다.bash -norc
이는 완전히 피해야 합니다.
즉, 이것은 본질적으로 예상되는 동작입니다. -x
실제로는 대화형 셸에서 사용하기 위한 것이 아니라 셸 스크립트를 디버깅하기 위한 것입니다. 실제로 실행되는 모든 명령을 인쇄하도록 설계되었습니다. 여기서 수행하는 작업은 모든 프롬프트를 인쇄하는 추가 명령 실행입니다.
답변2
$PS1
변수에 의해 호출되는 함수에 의해 추가 출력이 생성될 수도 있습니다 . 최소한의 프롬프트로 설정해보세요:export PS1='\u@h:\w \$ '