通常我的终端提示是
username place$
现在它只显示
bash-4.2$
并且所有颜色设置都已丢失(在终端配置文件上我有相同的配色方案,但它只是不显示颜色)
我不知道发生了什么(并且我不知道如何搜索这个)。
它从无到有改变,我正在使用 eclipse 和 maven,打开一个新终端,但新终端没有颜色。
注意:我没有 ~/.bashrc 文件,但有 ~/.bash_profile。
答案1
提示变量可能未设置,因此使用$PS1
内置默认值。\s-\v\$
当 bash 以交互方式启动时,它会获取一个配置文件,通常是~/.bashrc
或~/.bash_profile
,假设它们存在,这就是设置更高级的提示符的方式。从man bash
:
召唤
[...] 当 bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会查找〜/ .bash_profile,〜/ .bash_login,和 〜/.profile,以该顺序 [...]
[...] 当启动非登录 shell 的交互式 shell 时,bash 会读取并执行以下命令 〜/ .bashrc,如果该文件存在。
没有设置提示符可能会在两种不同的上下文中发生:登录 shell 和非登录 shell。如果您使用显示管理器直接登录 GUI,则不会遇到登录 shell,除非切换到虚拟控制台(例如通过CtrlAlt+ F1 到 F6)。但是,您可以通过显式打开一个新的登录 shell 在 GUI 中测试您的 bash 登录配置文件:bash -l
。
非登录 shell 出现问题
如果问题发生在普通 GUI 终端等情况下,则可能是您的~/.bashrc
文件丢失,或者已被编辑以排除全局文件的来源,可能是/etc/bashrc
.
如果
~/.bashrc
不存在,则应该有一个/etc/skel/.bashrc
用于为新用户创建它。只需将该文件复制到您的主目录中,您打开的下一个新 shell 就会出现默认提示。如果
~/.bashrc
存在,请检查某处是否有一行来源/etc/bashrc
:. /etc/bashrc -OR- source /etc/bashrc
如果不存在,请检查该文件是否存在(至少在大多数 Linux 发行版上应该存在)并将这样一行添加到您的
~/.bashrc
.
登录 shell 出现问题
如果登录 shell 和非登录 shell 均出现此问题,则问题可能与上述相同。如果发生仅有的对于登录 shell,您要么没有上面引用引用中提到的登录 shell 的文件之一,要么它们没有获取您的~/.bashrc
,这在大多数 Linux 发行版上是正常的。如果这些文件都不存在,请~/.bash_profile
在其中创建:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
在大多数情况下,这允许您将配置保存在一个文件中 ( ~/.bashrc
)。
如果无论你做什么都无法得到提示,你可以创建一个提示并将其放入~/.bashrc
以下方式:
if [ "$PS1 ]; then
PS1= .... # see below
fi
这是因为 $PS1 已设置并且具有交互式 shell 的默认值,并且您不想以其他方式设置它,因为其他事物可能会使用此值来确定这是否是交互式环境。
bash 手册页包含一个 PROMPTING 部分,它描述了如何使用动态功能(例如用户名和当前工作目录)设置提示,例如:
PS1="\u \w:"
有一个指南在这里使用颜色。请注意,您应该将非打印字符括在\[
和中\]
(在有关颜色的答案末尾对此进行了讨论)。
答案2
只需将其作为受影响用户的 root 粘贴到 ~/.bashrc 和 ~/.bash_profile 中即可。
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
答案3
出于安全原因不得不升级 Cygwin bash。
旧的 bash = 4.1.10(4)-release (i686-pc-cygwin) 大约 2009 年
$ echo $PS1
\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
新的 bash = 4.4.12(3)-release (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
答案4
当我们的 DBA 尝试为数据库安装创建 oracle 用户时,我遇到了同样的问题。他没有更改条目,而是删除了用户的一些配置文件所需的文件。
我通过从没有遇到问题的其他用户复制以下默认文件来解决:
/home/username/.bashrc
/home/username/.bashrc_profile
/home/username/.bashrc_logout
/home/username/.bashrc_history
无需更改这些文件中的任何设置/文本。
注销会话并重新登录。您应该使用颜色和登录提示恢复默认 shell(通常是 bash)。