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
프롬프트 사양을 조각으로 작성하거나 중간 변수를 사용하거나 두 가지를 조합하여 사용하십시오. 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))...'
...마지막으로 실행된 명령이 0이 아닌 종료 코드로 종료된 경우 강조되어야 합니다. 이것은 사진입니다 ...
이런 식 으로 연결 ${SSH_CLIENT+ssh:}
하면 @ssh:
...