![Bash는 긴 PS4 문자열을 자릅니다.](https://linux55.com/image/213274/Bash%EB%8A%94%20%EA%B8%B4%20PS4%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%9E%90%EB%A6%85%EB%8B%88%EB%8B%A4..png)
여러 bash 스크립트를 호출하는 대규모 빌드 프로젝트를 디버깅하려고 합니다. 누군가 수정 제안을 PS4
해서 스크립트 경로와 실행 중인 줄 번호가 출력되도록 다음과 같이 설정했습니다.
export PS4='\e[33m+ ${BASH_SOURCE}:${LINENO} \e[0m'
그런데 BASH_SOURCE
길어지면 출력이 모두 노란색(때문에 \e[33m
)으로 나오는 것을 확인했습니다. 추가 조사를 통해 길이가 80자를 초과할 때마다 bash가 잘리고 PS4
이 경우에는 \e[0m
실행되지 않는다는 것을 발견했습니다 . Google을 검색했지만 이 동작에 대한 문서를 찾을 수 없습니다.
현재 내 유일한 해결책은 수동으로 잘라내는 것입니다 BASH_SOURCE
. 더 좋은 방법이 있나요?
export PS4='\e[33m+ ${BASH_SOURCE:${#BASH_SOURCE}<80?0:-80}:${LINENO} \e[0m'