提示变量$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:"
这里有使用颜色的指南。请注意以下事实:您应该在\[
和中包含未打印的字符\]
(有关颜色的答案的结尾处有讨论)。