Bashrc PS1 错误

Bashrc PS1 错误

PS1为 bash创建了一个很好的http://bashrcgenerator.com/,但似乎出了什么问题。终端模拟器向我显示一些随机字符,这意味着PS1可能存在语法错误。奇怪的是,在我编辑它之后(使用 nano)它就会工作。如果我添加一个空格,删除它,保存它,然后运行 ​​bash,它就可以正常工作。但是当我注销并再次登录时,它又出现错误并且很奇怪。这是我的 .bashrc:

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'

#PS1='[\u@\h \W]\$ '
PS1="\[$(tput sgr0)\]\033[38;5;15m\033[38;5;14m\u\[$(tput sgr0)\]\033[38;5;15m\033[38;5;15m \[$(tput sgr0)\]\033[38;5;15m\033[38;5;10m\w\[$(tput sgr0)\]\033[38;5;15m\033[38;5;15m \
\[$(tput sgr0)\]\033[38;5;15m\033[38;5;14m\\$\[$(tput sgr0)\]\033[38;5;15m\033[38;5;15m \[$(tput sgr0)\]"

答案1

我建议您自己手动创建提示。您所要做的就是设置一些变量,然后用于设置提示的代码就变得可读。在我的 bashrc 文件中,我有以下内容:

#Set variables for foreground colors
fgRed=$(tput setaf 1)     ; fgGreen=$(tput setaf 2)  ; fgBlue=$(tput setaf 4)
fgMagenta=$(tput setaf 5) ; fgYellow=$(tput setaf 3) ; fgCyan=$(tput setaf 6)
fgWhite=$(tput setaf 7)   ; fgBlack=$(tput setaf 0)
#Set variables for background colors
bgRed=$(tput setab 1)     ; bgGreen=$(tput setab 2)  ; bgBlue=$(tput setab 4)
bgMagenta=$(tput setab 5) ; bgYellow=$(tput setab 3) ; bgCyan=$(tput setab 6)
bgWhite=$(tput setab 7)   ; bgBlack=$(tput setab 0)
#Set variables for font weight and text decoration
B=$(tput bold) ; U=$(tput smul) ; C=$(tput sgr0)
#NOTE: ${C} clears the current formatting

PS1="${B}${fgCyan}\u${C}@\h(bash): ${fgGreen}\w${C} > "

我敢打赌您一眼就能看出我的提示是什么样子的。这就是重点;不需要花哨的所见即所得编辑器。

我使用的原因tput是它应该更便携。作为一个额外的好处,使用tput使得当您echo $PS1在命令提示符下键入时,它会向您显示格式化/彩色版本的PS1.

这并不能完全回答你的不起作用的原因。但如果你像这样设置提示符,你肯定能够摆脱那个讨厌的错误。

相关内容