普段はWindowsなんですが、諸事情あってMacも使うことになりまして、
ターミナル上だとサーバーに接続してるのかローカルなのかわかりにくいので、
sshで接続したときのプロンプトの文字色を変えることにしました。
参考にしたのはこちら。
Bashでssh接続時、接続先によってプロンプトの文字色/背景色を変える
まぁ、この記事に全てが書いてあるからこの通りにやれば良いんだけど、ちょっと詰まったのでメモ。
1.ssh_change_prompt.shを作成する
わざわざシェルスクリプト作成してエイリアスを設定するの面倒だし、
そのまま.bash_profile
に書けば良くね?と思ってやってみたけどダメだった。
というわけで、素直に手順に従う。
$ cd
$ vi .ssh/ssh_change_prompt.sh
ssh_change_prompt.sh
#!/bin/bash
# server_nameごとに色を分けたい場合
if [[ "$@" == server_name ]]; then
ssh server_name -t "export PS1='\[\e[37m\][\[\e[31m\]\u\[\e[37m\]@\h \[\e[32m\]\W\[\e[37m\]]\$ '; bash --login"
else
ssh $@
fi
# どのサーバーにsshしても適用したい場合
ssh $@ -t "export PS1='\[\e[37m\][\[\e[31m\]\u\[\e[37m\]@\h \[\e[32m\]\W\[\e[37m\]]\$ '; bash --login"
ちなみにこれで[User@host CurrentDirectory]$
のように表示されて、Userが赤、CurrentDirectoryが緑、それ以外が白になります。
2.エイリアスを設定する
さっき作ったシェルにエイリアスを設定して、変更を反映する。
$ vi .bash_profile
alias ssh=~/.ssh/ssh_change_prompt.sh
変更した後反映するのも忘れずに。
$ source .bash_profile
ちょっと詰まったところ
試しにsshしてみたら、権限が無いって怒られた。
$ ssh server_name
-bash: /Users/user_name/.ssh/ssh_change_prompt.sh: Permission denied
さっき作ったssh_change_prompt.sh
を見たら実行権限がなかったので、ユーザーに実行権限を付与したらうまくいった。
$ ls -l .ssh/
-rw-r--r-- 1 user group 189 3 28 12:12 ssh_change_prompt.sh
$ chmod +x .ssh/ssh_change_prompt.sh
// もしくは
$ chmod u+x .ssh/ssh_change_prompt.sh
$ ls -l .ssh/
-rwxr--r-- 1 user group 189 3 28 12:12 ssh_change_prompt.sh