终端,提示更改为“ -Bash-4.2”,颜色丢失


9

通常我的终端提示是

username place$

现在只显示

bash-4.2$

并且所有的颜色设置都丢失了(在终端配置文件中,我使用相同的配色方案,但是只是不显示颜色)

我不知道会发生什么(我也不知道如何搜索)。

它什么都没有改变,我正在使用Eclipse和Maven,打开了一个新终端,并且新终端没有颜色。

注意:我没有〜/ .bashrc文件,但是我有〜/ .bash_profile。


提示是由变量PS1设置的,在这里您可以阅读更多有关此内容的信息,还有彩色提示的各种示例
RSFalcon7

这是否会发生1)仅在您登录控制台时出现; 2)仅在打开新的GUI终端时出现; 3)1和2都发生?如果不确定#1,请切换到VT并登录,或尝试bash -l
goldilocks 2014年

@ TAFKA'goldilocks'两者,如果我使用bash -l,颜色会回来,但是提示仍然是“ bash-4.2 $”
lcjury 2014年

如果我的答案不起作用,请echo $PS1在带有颜色的登录版本中发布输出。
goldilocks 2014年

Answers:


10

提示变量$PS1可能未设置,因此使用内置默认值\s-\v\$

当bash交互启动时,它会假设通常存在,便会提供一个配置文件,通常是~/.bashrc~/.bash_profile,这就是设置发烧友提示的方式。来自man bash

开票

[...]当bash作为交互式登录shell或具有--login选项的非交互式shell被调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。读取该文件后,它将依次搜索〜/ .bash_profile,〜/ .bash_login〜/ .profile [...]

[...]启动不是登录shell的交互式shell时,bash从〜/ .bashrc读取并执行命令 如果该文件存在)。

然后,没有在两个不同的上下文中设置提示集,即登录外壳程序和非登录外壳程序。如果使用显示管理器直接登录到GUI,除非切换到虚拟控制台(例如,通过CtrlAlt+ F1到F6),否则不会遇到登录外壳。但是,您可以通过显式打开新的登录shell在GUI中测试bash登录配置文件:bash -l

非登录外壳出现问题

如果问题出在例如普通的GUI终端上,则可能是您~/.bashrc丢失了,或者您已对其进行了编辑以排除采购全局文件/etc/bashrc

  • 如果~/.bashrc不存在,则应/etc/skel/.bashrc使用来为新用户创建它。只需将该文件复制到您的主目录中,您的默认提示将再次出现,提示您打开下一个新的Shell。

  • 如果~/.bashrc确实存在,请检查是否有一行源于/etc/bashrc

    . /etc/bashrc
      -OR-
    source /etc/bashrc

    如果不存在,请检查该文件是否存在(至少在大多数Linux发行版中应该存在),然后将这样的行添加到您的中~/.bashrc

登录外壳出现问题

如果登录外壳程序和非登录外壳程序都出现问题,则问题可能与上述相同。如果它在登录外壳程序中发生,则您要么没有上面的INVOCATION引用中针对登录外壳程序提到的文件之一,要么它们不提供您的文件~/.bashrc,这在大多数Linux发行版中都是正常的。如果这些文件都不存在,请~/.bash_profile在其中创建:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

在大多数情况下,这使您可以将配置保存在一个文件(~/.bashrc)中。


如果您不管做什么都无法找回提示,则可以创建一个提示并将其放入~/.bashrc这种方式:

if [ "$PS1 ]; then
    PS1= .... # see below
fi

这是因为$ PS1已设置并且具有交互式外壳程序的默认值,并且您不想设置它,否则其他原因可能会使用此值来确定这是否是交互式环境。

bash手册页的PROMPTING部分介绍了如何设置具有动态功能(如用户名和当前工作目录)的提示,例如:

PS1="\u \w:"

这里有使用颜色的指南。请注意以下事实:您应该在\[和中包含未打印的字符\](有关颜色的答案的结尾处有讨论)。


感谢TAFKA !,不仅仅是一个答案,我学到了一些新的东西:)!
lcjury 2014年

1

只需将它作为根用户粘贴到〜/ .bashrc和〜/ .bash_profile中即可。

# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi


0

出于安全原因,不得不升级Cygwin bash。

旧版bash = 2009年左右的4.1.10(4)-发行版(i686-pc-cygwin)

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

新的bash = 4.4.12(3)-发行(i686-pc-cygwin)大约2016年

为了获得完全相同的外观,必须添加到.bashrc

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

注意:包括 cd $HOME

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.