繁体   English   中英

如何让FreeBSD显示当前shell的完整路径?

[英]How to make FreeBSD show full path of current shell?

无论shell目前处于什么目录,控制台和SSH上的FreeBSD 10.1的默认用户提示始终$ 。如何将其更改为user@machine /full/path/to/current/directory $或类似的完整路径?

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”,我强烈建议坚持默认值!

你的问题有几点评论,我觉得这是一个不好的建议:

  1. export PS1='\\u@\\H: \\W $'是一个bash-ism。 这仅适用于使用bash shell的情况。 FreeBSD Bourne没有"\\u\u0026quot;
  2. 由于历史原因,“root”的shell设置为“csh”。 FreeBSD中的csh shell是“tcsh”变种。 但是它只设置为root - 你永远不应该以root身份登录! 所有用户都默认使用Bourne shell。 我建议不要使用“csh”。 你可以做一个“su - toor”而不是su“to root”,这是一个没有csh shell的备用root帐户。 这很重要,因为你不应该改变root shell远离csh!
  3. 绝对没有理由改变shell以获得合适的提示。

更新:
有几个原因你不应该更改root用户的shell:

  1. 没必要! 最佳做法是永远不要以root用户身份以交互方式登录。 如果你这样做 - 你做错了。 如果您发现自己以普通用户身份登录并仍希望以交互方式使用root用户 - 您仍然可以使用sudo -ssu root -c "/path/to/shell"以多种方式轻松完成此操作。 养成使用root 权限而不是root 用户的好习惯。 大多数时候你应该使用sudo而不是交互式root shell。

  2. 可预测性。 您可能不是唯一的管理员。 或者你可能会遭受痛苦

  3. 单用户模式。 如果您的系统出现问题,您最终只能安装/bin 在这些情况下,将shell静态链接并放置在/bin非常重要。 第三方shell通常放在/usr/local/bin (并且动态链接)中,这可能不会在您的紧急情况下安装。

  4. 出于这个原因,您有toor用户。 它与root具有相同的uidgid 您可以将shell设置为您对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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM