FreeBSD 中的默认用户 shell 是 Bourne shell /bin/sh。您可以通过设置 PS1 变量来更改提示。在命令行上执行此操作:
export PS1="`whoami`@\H:\w\$ "
要在每次登录时自动完成,您应该更改主目录.shrc 中的配置文件。
.shrc 文件已经有一个可供您使用的替代提示 - 您只需取消注释这些行:
# set prompt: ``username@hostname$ ''
PS1="`whoami`@`hostname | sed 's/\..*//'`"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac
如果你也想拥有这个目录,你可以和我一样。将上面的所有行替换为:
PS1="`whoami`@\H:\w\$ "
不需要 case 结构,因为 "\$" 将提示设置为 $ 或 #(用户/root)。
Bourne Shell 非常强大,命令行编辑在 FreeBSD 变体中很容易获得。我建议您坚持使用它,因为您可能编写的任何脚本都是高度可移植的。请注意,FreeBSD 中的 Bourne shell 比 Linux 上的功能更强大。这也是 bash 在 Linux 上占主导地位的部分原因。 FreeBSD 上的默认 shell 开箱即用。如果您习惯了 Linux,您可以更改为 bash,让您有宾至如归的感觉。如果不是 - 那么我会花时间在 FreeBSD 上学习 Bourne。如果你长大了 - 那么我会看像“zsh”这样的东西。但是如果你的水平是在搞清楚“PS1”,我强烈建议你坚持使用默认值!
你的问题有几个我觉得不好的建议:
-
export PS1='\u@\H: \W $' 是一种 bash 主义。仅当您使用 bash shell 时才适用。 FreeBSD Bourne 没有"\u"。
- 由于历史原因,“root”的 shell 设置为“csh”。 FreeBSD 中的 csh shell 是“tcsh”变体。但是,它仅针对 root 设置 - 您永远不应该以 root 身份登录!所有用户都默认使用 Bourne shell。我建议不要使用“csh”。您可以执行“su - toor”而不是 su 到“root”,这是一个没有 csh shell 的备用 root 帐户。这很重要,因为您不应该将根 shell 更改为远离 csh!
- 绝对没有理由为了获得合适的提示而更改 shell。
更新:
不应该更改 root 用户的 shell 有几个原因:
不需要!最佳做法是永远不要以 root 用户身份交互登录。如果你这样做 - 你做错了。如果您发现自己以普通用户身份登录并且仍然希望以交互方式使用 root 用户 - 您仍然可以使用 sudo -s 或 su root -c "/path/to/shell" 以多种方式轻松完成此操作。养成使用 root permissions 而不是 root user 的好习惯。大多数时候你应该使用sudo 而不是交互式的root shell。
可预测性。您可能不是唯一的管理员。或者你可能会遭受pain。
单用户模式。如果您的系统出现问题,您最终只能挂载/bin。在这些情况下,将 shell 静态链接并放置在/bin 中非常重要。第三方 shell 通常放置在/usr/local/bin(并动态链接)中,在您的紧急情况下可能不会安装。
您有此exact reason 的toor 用户。它与root 具有相同的uid 和gid。您可以将外壳设置为您对toor 用户的渴望,并拥有一个干净的root 帐户。只需使用su - toor 而不是su -(或者只为su 创建别名)。
参考资料:
如何在不同的shell中设置PS1提示符:http://www.understudy.net/custom.html
不使用 C shell 的十大理由:http://www.grymoire.com/unix/CshTop10.txt
Csh 编程被认为是有害的:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
带有用于 Bourne Shell https://www.freebsd.org/cgi/man.cgi?query=sh 的 PS1 变量的手册页