谁决定了 Linux 中的默认 shell 提示符?

谁决定了 Linux 中的默认 shell 提示符?

我认为标准 Linux shell bash 中有几个默认设置需要引入一些历史记录。这个问题是关于提示符的。

许多 Linux 发行版中的 bash 默认提示符是[\u@\h \W]\$

对于那些不能解析的人来说,对于典型的用户来说它看起来像这样:

[staticsan@walcen files]$ _

最大的问题是它只告诉你当前目录的名称。“files”可能就这么简单/var/www/files//home/staticsan/files这只是一个简单的例子)。完整路径更有意义,所以每次设置新框或创建新用户时,我都必须更改它。

那么为什么默认设置是这样的呢?

答案1

答案很简单——这是终端宽度为 80 个字符的时代的遗留。看看你自己的例子——用户名和主机已经占用了 16 个字符。加上额外的括号和空格,已经有 20 个字符了,而且我们还没有计算目录名。

而且目录的名称也可能很长。您的示例路径有 21 个字符,但只有三个目录深。在这种情况下,在 80 个字符的终端上,该提示将占据屏幕宽度的一半。

当然,如今的终端更宽了,这就是为什么许多用户和发行版都改用更长的提示符。但仍有一些使用较窄的提示符,以便为用户留出更多输入空间。

答案2

一个可能的答案是

[my_name@my_machine /var/www/html/my_site/my_subdir/another_subdir/yet_another_subdir/and_more_subdirs_yet/see_here/another_subdir/etc $] _

对你的工作来说会非常不方便

答案3

我不会回答该问题的“为什么”部分。

但我会给你一个提示,告诉你如何改变你未来所有用户帐户的默认行为:

您可以通过更改 /etc/skel/ 中的文件来更改创建用户时使用的默认文件(以及文件布局)。

因此,更改 /etc/skel/.bashrc 中的 PS1 变量,它将成为新用户的默认设置。

答案4

我进入我的/etc/skel并将默认提示编辑为以下内容:

\[\033[33m\][\u@\[\033[1;31m\]\h]\]\033[0m {\W}\n\033[1;34m\]\w\]\033[0m >

它看起来像这样:

[user@hosts] {currentdir}
/path/to/current/dir >

加上颜色——因为我喜欢颜色:)

但确实如此——“为什么”与小型终端有关,而且现在缺乏改变现状的意愿。

更新无色

[\u@\h] {\W}\n\w >

相关内容