echo -ne "${none}" 使用编辑器命令时每隔一行

echo -ne "${none}" every other line when using editor for commands

当从 shell 编辑器 ctrl-x e

发出命令时,我一直遇到 echo -ne "${none}" 显示每隔一行的问题

例如输入for i in what is going on ? ; do echo "$i"; done 会打印出

echo -ne "${none}"
echo -ne "${none}"
what
echo -ne "${none}"
echo -ne "${none}"
is
echo -ne "${none}"
echo -ne "${none}"
going
echo -ne "${none}"
echo -ne "${none}"
on
echo -ne "${none}"
echo -ne "${none}"
R

我不太确定发生了什么。它似乎对事情没有影响,但让阅读输出有点痛苦。


所以我想我已经弄明白了为什么我只从编辑那里得到 'echo -ne "${none}"'。

我已经编辑了我的 .bashrc,确实包含了 https://github.com/andresgongora/synth-shell 中的 花式 bash 提示符 。为我的 bash 提示着色。

        ############################################################################
        ## BASH PROMT                                                             ##
        ## Generate promt and remove format from the rest                         ##
        ############################################################################
        PS1="$TITLEBAR\n${PROMT_USER}${SEPARATOR_1}${PROMT_HOST}${SEPARATOR_2}${PROMT_PWD}${SEPARATOR_3}${PROMT_INPUT}"



        ## For terminal line coloring, leaving the rest standard
        none="$(tput sgr0)"
        trap 'echo -ne "${none}"' DEBUG

我假设从编辑器输入命令不会设置 none 变量

我建议检查您的 bash non-interactive shell initiation/termination 流程。

似乎每次调用和终止 non-interactive shell 命令时,您都会收到 echo -ne "${none}"

建议 1

识别当前 bash 函数的一个技巧,其中包括 echo -ne :

set |grep -B 20 "echo -ne"

此命令将打印每个 echo -ne 命令上方的 20 行。

建议 2

检查 bash initiation/termination 脚本:

sudo grep "echo -ne " ~/.bash_profile ~/.bash_login ~/.profile /etc/profile /etc/bashrc /etc/profile.d/*

建议 3

检查 shell 提示的配置 PS1,您的终端可能不支持它(颜色、粗体、字体...)

sudo grep PS1 ~/.bash_profile ~/.bash_login ~/.profile /etc/profile /etc/bashrc /etc/profile.d/*

建议 4

测试当您使用没有 GUI 的纯文本会话 (TUI) 时此行为是否一致。

如果此问题仅出现在 GUI 环境中,则说明您的终端配置有问题 TTY 配置 and/or 提示 PS1 .