跑
set -x
echo 中文
echo english
表明
+ echo $'\344\270\255\346\226\207'
中文
+ echo english
english
如何让它显示 + echo 中文 $ 而不是 + echo $'\344\270\255\346\226\207'?
可能取决于 Bash 的版本、操作系统和语言环境:
$ echo 中文
+ echo 中文
中文
$ echo "$BASH_VERSION"
+ echo '5.0.17(1)-release'
5.0.17(1)-release
$ locale
+ locale
LANG=fr_FR.UTF-8
LANGUAGE=fr:de_DE:en
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY=fr_FR.UTF-8
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LC_ADDRESS=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_ALL=
如何显示 + echo 中文 $ 而不是 + echo $'\344\270\255\346\226\207'?
不更改 bash 源是不可能的。
如何让它显示 + echo 中文 $ 而不是 + echo $'\344\270\255\346\226\207'?
为 bash 源代码编写一个补丁并实现您自己的行为以使用此表示。没有其他方法,因为set -x输出来自 bash 本身(除了前缀+可以用 配置PS4)。的输出在 print_cmd.c xtrace_print_word_list()set -x中产生。