FreeBSD 10.1 在控制台和 SSH 上的默认用户提示始终为$,无论 shell 当前位于哪个目录。如何将其更改为user@machine /full/path/to/current/directory $或类似的完整路径?
小智 5
FreeBSD 中的默认用户 shell 是 Bourne shell /bin/sh。您可以通过设置 PS1 变量来更改提示。在命令行上执行此操作:
export PS1="`whoami`@\H:\w\$ "
Run Code Online (Sandbox Code Playgroud)
要在每次登录时自动完成,您应该更改主目录中的配置文件.shrc。
该.shrc文件已经有一个可供您使用的替代提示 - 您只需取消注释这些行:
# set prompt: ``username@hostname$ ''
PS1="`whoami`@`hostname | sed 's/\..*//'`"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac
Run Code Online (Sandbox Code Playgroud)
如果你也想拥有这个目录,你可以像我一样做。将上面的所有行替换为:
PS1="`whoami`@\H:\w\$ "
Run Code Online (Sandbox Code Playgroud)
不需要 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 shell 的情况。FreeBSD Bourne 没有"\u".更新:
您不应该更改 root 用户的 shell 有几个原因:
不需要!最佳实践是永远不要以 root 用户身份交互式登录。如果你这样做——你就做错了。如果您发现自己以普通用户身份登录并且仍然希望以交互方式使用 root 用户 - 您仍然可以使用sudo -s或通过多种方式轻松完成此操作su root -c "/path/to/shell"。养成使用root权限而不是root用户的好习惯。大多数时候您应该使用sudo而不是交互式 root shell。
可预测性。您可能不是唯一的管理员。否则你可能会感到痛苦。
单用户模式。如果您的系统出现问题,您可能最终只能安装/bin. 在这些情况下,将 shell 静态链接并放置在/bin. 第三方 shell 通常放置在/usr/local/bin(并动态链接)中,在紧急情况下可能不会安装。
您正是toor因为这个原因才拥有了用户。它具有相同uid和gid作为root。您可以将外壳设置为您内心渴望的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 的 PS1 变量的手册页https://www.freebsd.org/cgi/man.cgi?query=sh