![编辑 .bashrc 后,我的提示符中出现了幽灵](https://linux22.com/image/110774/%E7%BC%96%E8%BE%91%20.bashrc%20%E5%90%8E%EF%BC%8C%E6%88%91%E7%9A%84%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%AD%E5%87%BA%E7%8E%B0%E4%BA%86%E5%B9%BD%E7%81%B5.png)
我将以下内容添加到我的~/.bashrc
:
export PS1="\e[0;35m[\u@\h \W]\$ \e[m "
echo -e "\e[0;35mYOU ARE ON THE LIVE SERVER !!\e[0m"
可悲的是,现在,每次我将长的东西粘贴到 bash 中时,它都会变得湿漉漉的,幽灵tab
字符出现在屏幕上,并且线条互相吞噬,有人知道为什么吗?
答案1
我过去也遇到过 ANSI 颜色代码与命令行导航混淆的问题;您需要放置 ANSI 代码,\[ \]
以便命令 shell 知道如何(不)将它们作为输入字符串的一部分考虑在内。
如:
export PS1="\[\e[0;35m\][\u@\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
关于为什么 shell 需要\[
和 的一些解释\]
:为了在终端字符矩阵中的正确位置绘制提示符,shell 需要知道提示字符串的正确长度,即提示字符串的长度。可打印字符,即不是控制字符或字符序列。
但是,shell 不知道终端认为哪些字符序列可打印。因此,需要向 shell 提供提示以区分可打印序列和不可打印序列,这就是\[
和的目的\]
。
答案2
我已经修复了这个问题我使用了这个网站http://bashrcgenerator.com/并以手动方式完成,它更长,但如果你双击元素,你可以给它们着色,它确实有效
我最终得到
export PS1="\[\033[38;5;129m\][\u@\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;129m\]~]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"