以前我连什么是 shell 都不知道,不是没查过资料,但是查资料也理解不了。后来慢慢知道了,而且知道各种不同的 shell ,比如 FreeBSD 的 sh , csh , zsh ,还有 Linux 的 Bash 等等。
除了 FreeBSD 之外,其它的 BSD 系统我也装过,对 OpenBSD 的 ksh 印象深刻,ksh 为什么只显示主机名不显示用户名呢?起初我还以为这是 ksh 和 sh 的区别。最近装了 NetBSD ,突然发现 NetBSD 的 sh 也只显示主机名。NetBSD 的 sh 和 FreeBSD 的 sh 应该是同一个东西。这才发现,原来 shell 是否显示用户名,是各种 shell 配置后的结果。

如何让 FreeBSD 的 sh 不显示用户名
# 编辑 ~/.shrc 文件
$ ee ~/.shrc
接着在这个文件中找到 PS1 变量的位置,修改如下:
# 更新 PS1 变量包含主机名 (\h) 和你当前目录 (\w):
PS1="\h:\w \$ "
最终显示效果如:FreeBSD:/usr/home $
接着执行下面的命令让修改生效:
$ . ~/.shrc
2026年9月24日更新:
今天找到了另一个方法,直接在系统默认的 .shrc 文件末尾加入如下内容:
if [ "\$(id -u)" = "0" ]; then
PS1="`hostname`# "
else
PS1="`hostname`$ "
fi
export PS1
然后执行如下命令使其生效即可。
$. ~/.shrc
搞定!
Leave a Reply