控制台和SSH上的FreeBSD 10.1的默认用户提示始终是$
,无论shell当前在哪个目录中。如何将其更改为user@machine /full/path/to/current/directory $
或类似的完整路径?
答案 0 :(得分:4)
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\$ "
由于"\$"
设置$或#(用户/ root)的提示,因此不需要案例结构。
Bourne Shell功能非常强大,FreeBSD变体中提供了命令行编辑功能。我建议你坚持下去,因为你写的任何脚本都是高度可移植的。请注意,FreeBSD中的Bourne shell比Linux上更强大。这部分是为什么bash在Linux上占主导地位的原因。 FreeBSD上的默认shell更易于使用。如果你已经习惯了Linux,你可以改为使用bash来感受更多的感觉。如果没有 - 那么我会花时间在FreeBSD上学习Bourne。如果你长大了 - 那么我会看一下像“zsh”这样的东西。但如果您的等级是在计算“PS1”,我强烈建议坚持使用默认值!
对你的问题有几点评论我认为是不好的建议:
export PS1='\u@\H: \W $'
是一种抨击。这仅适用于使用bash shell的情况。 FreeBSD Bourne没有"\u"
。 <强>更新强>
有几个原因你不应该更改root用户的shell:
不需要!最佳做法是永远不要以root用户身份以交互方式登录。如果你这样做 - 你做错了。如果您发现自己以普通用户身份登录并仍希望以交互方式使用root用户 - 您仍然可以使用sudo -s
或su root -c "/path/to/shell"
以多种方式轻松完成此操作。养成使用root 权限而不是root 用户的好习惯。大多数情况下,您应该使用sudo
而不是交互式root shell。
可预测性。您可能不是唯一的管理员。或者您可能会遇到pain。
单用户模式。如果您的系统出现问题,您最终只能安装/bin
。在这些情况下,将shell静态链接并放置在/bin
中非常重要。第三方shell通常放在/usr/local/bin
(并且动态链接)中,可能无法在您的紧急情况下安装。
您拥有此exact reason的toor
用户。它与uid
具有相同的gid
和root
。您可以根据toor
用户的心愿设置shell,并拥有一个干净的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变量的手册页