透過 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 ~/.bashrcssh user@server提示就是我想要的*:
[12:03:08 user@server ~]$

*它適用於 CentOS 或 AWS Linux。不適用於 Ubuntu,因為它覆蓋了 $PS1。

免責聲明:卡在 Windows 上,無法安裝 Ubuntu 或雙重啟動。虛擬機器不是一個選項。 /哭

答案3

對於 Ubuntu 來說不是那麼侵入性的變體(只是在遠端 .bashrc 中啟用顏色提示):

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

相關內容