
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を変更するにはどうすればよいですか?
答え1
プロンプト仕様をフラグメントとして作成するか、中間変数を使用するか、2つを組み合わせて使用します。SSH_CLIENT
ログインする場所を示す SSH 設定変数です。その後、ホスト名を使用してログインした場所を確認できます。
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\] '
答え2
他の人と同じですが、できるまた、別々のrcファイルを使用してくださいssh
。
<<\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:
...