我正在通过 SSH 使用 Ubuntu Server,我看到的$
是用户的名称(例如test@desktop
,)。
我怎样才能使终端显示test@desktop
而不是$
?
答案1
您必须在客户端系统上定义 PS1 变量,并确保在执行时获取该定义的来源ssh
。
它可能已经在.bashrc
远程系统上定义,因此您只需.bashrc
通过启动交互式 shell 来获取源(remote-sys
显然用您的远程系统的名称替换)
ssh remote-sys -t bash -i
如果这不起作用,因为.bashrc
在远程系统上不存在,或者没有定义 PS1,并且您想在远程系统上使用与本地系统相同的设置,那么复制您自己的设置.bashrc
:
scp ~/.bashrc remote-sys:.bashrc
或者,您可以创建一个文件,纯粹按照您在远程系统上想要的方式设置提示符……例如
nano .set-prompt
输入文本(这将设置 user@host 作为提示)
export PS1="\u@\h "
或者如果你想让它看起来像 Ubuntu 提示符user@host:working-directory$
export PS1="\u@h:\w$ "
或根据需要自定义。保存文件并退出,然后将scp
其发送到远程系统
scp .set-prompt remote-sys:.set-prompt
当你ssh
进入机器时,你必须明确地获取文件并告诉 bash 使 shell 具有交互性:
ssh remote-sys -t "bash --rcfile ~/.set-prompt -i"
如果您确实sudo -i
要在远程系统上更改为 root,则提示将再次更改,因为.bashrc
将获取 root 的权限。
答案2
如果您正在通过 SSH 进入sh
会话(根据您当前的情况,我认为就是这种情况),那么您可以将变量和命令添加到 PS1:
PS1='$USER@$(hostname)\$ '
如果你通过 SSH 进入bash
会话,则需要无尽的选择,但如果您刚开始使用,我建议您使用默认值。要仅在当前会话中设置 PS1,请运行以下命令:
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
要使更改永久生效,请~/.bashrc
在远程计算机上打开并将上述行添加到其中。
看在哪里可以找到 $PS1 变量的完整参考?了解上面这一行的作用。
PS:我自己不怎么使用 SSH,所以您可能需要更改一些其他设置才能使其正常工作。
答案3
PS1="/u@/h"
将会满足您的要求,尽管我不建议您这样做,因为这会使您难以确定您是处于标准模式还是超级用户模式。
要将其改回 16.04(及更早版本?)的默认设置,请使用PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$"
您可以通过编辑 /etc/bash.bashrc 并使用您喜欢的编辑器附加更改来使更改永久生效
资料来源: 这一页和测试。