Bash 截断长 PS4 字符串

Bash 截断长 PS4 字符串

我正在尝试调试一个调用一堆 bash 脚本的大型构建项目。有人建议修改,PS4所以我将其设置为以下代码片段,以便打印脚本的路径和正在执行的行号。

export PS4='\e[33m+ ${BASH_SOURCE}:${LINENO} \e[0m'

然而,当BASH_SOURCE很长时,我注意到所有输出都是黄色的(因为\e[33m)。经过进一步检查,我发现 bashPS4每当长度超过 80 个字符左右时就会被截断,并且在这种情况下\e[0m永远不会被执行。我用谷歌搜索了一下,但没有找到任何关于此行为的文档。

目前我唯一的解决方法是手动截断BASH_SOURCE。有没有更好的办法?

export PS4='\e[33m+ ${BASH_SOURCE:${#BASH_SOURCE}<80?0:-80}:${LINENO} \e[0m'

相关内容