SSHを使用して接続しているホストに基づいてPS1の外観を変更しようとしています。私の現在のPS1:
PS1='\[\e[1;32m\]\u@\h\[\e[1;34m\] \w\[\e[1;31m\]$(__git_ps1)\[\e[1;0;37m\] \$\[\e[0m\] '
ホストの場合Host1
最初の色を黄色に置き換えたいのですが1;33
およびHost2
取る 1;35
を例として使用します。
SSHを使用して特定のホストに接続していることを確認し、それに応じてPS1を変更するにはどうすればよいですか?
プロンプト仕様を分割して構築するか、中間変数を使用するか、または両方の組み合わせを使用します。 SSHは、ログイン元を示すSSH_CLIENT
変数を設定します。次に、ホスト名を使用して、ログインしている場所を判別できます。
if [[ -n $SSH_CLIENT ]]; then
case $HOSTNAME in
*.example.com) Prompt_user_Host_color='1;35';; # Magenta on example.com
*) Prompt_user_Host_color='1;33';; # yellow elsewhere
esac
else
unset Prompt_user_Host_color # omitted on the local machine
fi
if [[ -n $Prompt_user_Host_color ]]; then
PS1='\[\e['$Prompt_user_Host_color'm\]\u@\h'
else
PS1=
fi
PS1+='\[\e[1;34m\] \w\[\e[1;31m\]$(__git_ps1)\[\e[1;0;37m\] \$\[\e[0m\] '
他のものと同様ですが、あなたはcouldssh
用に別のrcファイルも使用します。
<<\SSH_RC \
tee -a ~/.ssh/rc
case $HOSTNAME in
(Host1) sshclr=1;;
(Host2) sshclr=3;;
esac
...そしてどこに$PS1
...を割り当てるか.
PS1="\[\e[1;$((32+ssh_clr))"'...
...単一引用符で囲むこともできます...
PS1='\[\e[$((!$?|4));$((32+sshclr))...'
...最後に実行されたコマンドがゼロ以外の終了コードで終了した場合に下線が引かれます。これが写真です...
${SSH_CLIENT+ssh:}
拡張をそこに追加して、そのように接続されたときに@ssh:
を明確に示します...