使用 SSH 时,将终端提示符中的 $ 替换为 user@host

使用 SSH 时,将终端提示符中的 $ 替换为 user@host

我正在通过 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 并使用您喜欢的编辑器附加更改来使更改永久生效

资料来源: 这一页和测试。

相关内容