簡體   English   中英

如果遠程運行,只在bash提示符中列出主機?

[英]Only list host in the bash prompt if running remotely?

我正試圖按照我的意願修改我的Bash提示; 這就是$PS1看的樣子(為了清晰起見,為了清晰起見了顏色):

PS1='\u@\h:\w\$ '

結果如下:

andreas@tablet-2710p-ubuntu:~$ 

如果我在本地運行當前的Bash會話而不是訪問遠程服務器,我是否可以調整提示,以便隱藏@tablet-2710p-ubuntu位(由@\\h表示)?

我還寧願不對其進行硬編碼(例如,只是替換任何出現的tablet-2710p-ubuntu )以便於移植,以及以后更改主機名。

我所知如何檢測shell是否受SSH控制? ,如果設置了任何變量$SSH_CLIENT$SSH_TTY ,則表示您通過SSH連接。

如果您使用的是基於Debian的系統(例如Ubuntu),您可以將.bashrc編輯為類似的東西,以達到預期的效果(請注意, PS1設置的字符串必須用雙引號定義 ,而不是單引號,默認情況下):

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
    if [ "$color_prompt" = yes ]; then
        host="@\[\033[1;34m\]\h\[\033[00m\]"
    else
        host="@\h"
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]${host}:\[\033[01;34m\]\w\[\033[00m\]\$ "
else
    PS1="${debian_chroot:+($debian_chroot)}\u${host}:\w\$ "
fi
unset host
unset color_prompt force_color_prompt

其結果如下:

BASH:在本地運行時隱藏主機,在通過SSH連接時顯示主機

附注:這些更改應在您通過SSH連接的服務器上的.bashrc (或.profile ,具體取決於分發)上進行 在您自己的本地Bash配置文件中設置它們對連接到其他遠程服務器時顯示的內容沒有影響。

你想要下面的東西嗎?

if [ "$SSH_CONNECTION" ]; then 
    PS1='\u@\h:\w\$ '
else
    PS1='\u:\w\$ '
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM