我正在将gnome-terminal
bash 与 bash 一起使用,当我有一个应该越过该行的命令时,它只会保留在同一行上。所以而不是:
echo "abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)
我会得到
opqrstuvwxyz""abcdefghijklmn
Run Code Online (Sandbox Code Playgroud)
或者类似的东西。但是,如果我按 Enter 键,该命令仍然有效。我相信这与我的 PS1 变量有关,但我不知道它出了什么问题。这里是:
export PS1='\e[1;35m[\u:\w]\$\e[0;35m '
Run Code Online (Sandbox Code Playgroud)
这似乎有些相关:
Bash 手册页建议将输出包装起来
tput
。\[ \]
这有助于 Bash 忽略不可打印的字符,以便正确计算提示符的大小。
来源。
您的情况下的“tput
输出”如下所示:\e[1;35m
,\e[0;35m
(有两个单独的片段需要包装)。它们也可以写成\033[1;35m
和。\033[0;35m
一般来说,您需要包装任何不可打印的序列。
我修改了你的PS1
:
export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '
Run Code Online (Sandbox Code Playgroud)
它似乎对我有用,没有问题。
归档时间: |
|
查看次数: |
5114 次 |
最近记录: |