我正在尝试调试一个调用一堆 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'