在Bash提示符中,目录路径末尾的井号(#)是什么意思?

我正在安装Ubuntu的更新时遇到了一个错误,它允许我"启动新的shell来检查情况"。这样做会将我放置在同一个窗口中的目录结构顶部,并在末尾添加##代表什么意思?
如何通过命令行实现这种变化?

你的意思是提示符以#结尾而不是$吗? - Chai T. Rex
1你需要给我们更多的信息。例如,你正在安装哪些更新(是几个软件包还是从一个操作系统版本升级到另一个版本),以及你遇到了什么错误。此外,我猜你想知道如何修复你的系统,而不是如何更改提示符,对吗?顺便说一下,谢谢你教给我“井号”这个词,多年来我第一次看到它被称为这个名字! - Ray
@Ray 这些问题显然不是关于修复任何东西的。井号代表什么,以及如何实现它都很清楚。 - Chai T. Rex
还有这个:https://askubuntu.com/q/881998/295286 基本上,在基于Debian的系统中,每个用户都有一个非常详细的~/.bashrc文件,用于设置提示符。前导的/表示你在最顶层,也就是根目录。 - Sergiy Kolodyazhnyy
@ChaiT.Rex 我不太清楚"pretty clear"是什么意思。我的意思是,问题确实问了#的含义。是的。那么第一句关于错误的陈述就没有意义了吗?至少,这个问题应该包含一个表明提问者"不在意"这个错误的短语。 - Ray
澄清一下,我提到八角井号的变化原因只是为了交代背景。我只是想知道它与美元符号之间有什么区别,以及如何在终端中切换 $ 和 #。"这代表什么,又是如何实现的呢?" - Struan Murray
1个回答

听起来你得到了一个root shell。通常,root shell 用井号(#)表示,而用户 shell 则通常用美元符号($)表示。
是否还有目录名或用户名取决于所使用的特定 shell,因为 root shell 可以是以下任何一种形式:
#
/#
/dir#
username:/dir#
username@hostname:/dir#

上述示例中的最后一个是Ubuntu中Bash的默认提示符。第一个是dash shell的默认提示符。尝试使用/bin/sh。当然,这两者都是可配置的。
要打开root shell,快捷键是:
sudo -i

这将以登录 shell 的形式打开 root 用户配置的 shell,通常为 bash。这是一个 sudo su - 的快捷方式。如果您想以 root 用户身份打开其他 shell,而又不想修改 root 用户配置的 shell,您可以使用冗长的方法:

sudo su -s /bin/sh -

将/bin/sh替换为您想要打开的shell。

这回答了我问题的第一部分:“这代表什么”,谢谢。如果你能回答“如何实现这个目标”,我将接受这个回答。 - Struan Murray
@StruanMurray 当你启动一个root shell时,就会发生这种情况,例如 sudo -i。你也可以将你的PS1设置为使用#而不是$,但我不建议这样做。然而,我不知道Bash如何在shell被root拥有时将提示符更改为#。我不知道在源代码中找到它的位置,我在Bash手册中找不到它,我找不到任何能够实现这一点的变量,也找不到任何解释它的Stack Exchange问题。所以,如果这是你想知道的内容,那是个很好的问题!如果你相应地编辑你的问题,我会投票重新打开它 - 如果你不想这样做,我可能会自己提问。 - Zanna
@Zanna 谢谢你的回答,虽然这并不完全是我想要知道的字符在源代码中是如何改变的,可能是因为我的问题表达不清楚。但你说得对,了解这些变量存储在哪里或者它们是否被硬编码到bash提示符中可能是一个非常好的问题,欢迎你提出自己的问题!你已经回答了我关于sudo -i部分的问题,如果你发表一个回答,我会接受它作为答案,但请理解这个问题可能会被删除,因为之前已经有类似的问题被问过了。 - Struan Murray
@StruanMurray 感谢你的评论,澄清了你想知道的内容 :) thomasrutter 可能需要编辑这个答案,以包括你可以使用诸如 sudo -i 的命令来启动 root shell。由于你的问题得分良好且有积极评价的答案,它不太可能被删除。高质量的“重复”问题通常不会被删除,尽管关闭它们会阻止添加新的回答,但它们被认为是有用的。如果你喜欢我提出的问题的想法,请随时提问!如果你还没有这样做的话,我可能会在明天或本周晚些时候处理它。 - Zanna
根据您的要求,我已经相应地修改了我的回答。 - thomasrutter