複数の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'