0

set -x
echo 中文
echo english

表明

+ echo $'\344\270\255\346\226\207'
中文
+ echo english
english

如何让它显示 + echo 中文 $ 而不是 + echo $'\344\270\255\346\226\207'?

4

2 回答 2

5

可能取决于 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=
于 2021-05-31T08:29:46.207 回答
2

如何显示 + 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中产生。

于 2021-05-31T08:14:51.703 回答