通过 ssh 或 putty 设置自定义 bash 提示符

通过 ssh 或 putty 设置自定义 bash 提示符

当登录到服务器时,我希望在 bash 提示符上显示时间,这样当我检查之前做过的事情时,我就可以看到我做这件事的时间。我认为在尝试调试时,这是一个特别有用的功能。
它看起来像这样:

[root@server 11:46:02 ~]# ls
file1 file2
[root@server 11:47:50 ~]# whoami
root

我发现我可以用以下方法做到这一点ssh

ssh root@server -t "export PS1='[\u@\h $(date +%H:%M:%S) \W]\$ '; exec bash"

ssh root@server -t "export PS1='[\u@\h \t \W]\$ '; exec bash"

但显然每次我输入新内容时日期都不会更新。
我根本不知道如何从 PuTTY 中执行此操作 - 我看到在“连接”->“数据”中有一个设置可以将环境变量发送到服务器,但这不起作用。

请注意,我不想在服务器端更改任何内容(没有 sshd 更改、没有 bashrc 或配置文件更改):)

答案1

我无法用 putty 帮助您,但请注意,bash 有一个当前时间的代码,因此您可以用$(date +%H:%M:%S)替换\t

答案2

尽管我还没有找到 PuTTY 的答案,但我找到了一个更好的替代方案:
1. 安装赛格威(并享受更高的生产力)
2.将 Cygwin 快捷方式添加到我的 PATH 中,以便我可以按 WIN+R 并输入 cyg 来打开终端
3.在 Cygwin ~/.bashrc 中添加此功能:

ssh () { /usr/bin/ssh "$@" -t "export PS1='[\t \u@\h \W]\$ '; exec bash"; }

重新打开 Cygwin 或者source ~/.bashrc并且ssh user@server提示正是我想要的 *:
[12:03:08 user@server ~]$

*它适用于 CentOS 或 AWS Linux。不适用于 Ubuntu,因为它覆盖了 $PS1。

免责声明:卡在 Windows 上,无法安装 Ubuntu 或双启动。VM 不是一个选项。/Cry

答案3

对于 Ubuntu 来说侵入性不是那么强的变体(仅在远程 .bashrc 中启用颜色提示):

ssh user@server -t "sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/g' .bashrc;exec bash"

相关内容