bashrcとsshrcのススメ!!@2024

2024年10月30日

この記事を読むと得られる情報

  • bash環境でコンソールをリッチな見た目にする方法
  • そのリッチなbash環境をリモートサーバーへ持ち出す方法
リモートでもカラー付きのbash環境

快適なコンソール生活を「リモートでも」送りたい!

私、bashrcとか作り込んでコンソール画面をリッチにするのが大好きなのですが
ローカル環境でbashrcを作り込んでもSSH経由での作業が多い場合、SSHした瞬間簡素なコンソール画面になっちゃうのが好きじゃないんですよね。

そんな問題を解決するのがsshrcというソフト。
UbuntuやMacでも使えるのでWSLと組み合わせれば大半のクライアント端末で利用できてオススメです。
基本的な導入方法や使い方は偉大なる諸先輩方の記事をご参照ください。

【sshした先に.bashrcや.vimrcを持って行きたい人のためのsshrc】
https://qiita.com/ikuwow/items/ba4ca57fd67c06fd1b19

ちなみにzshとかいうリッチなシェル環境が界隈ではもてはやされているのは存じているのですが、商用環境など自分一人で管理していないいろんなサーバーを渡り歩くとなるとzshなんて入ってないサーバーが大半なので基本的にbash縛りで生きています。

sshrcで持って行くbashrcについて

さてsshrcについて理解した?ところで、本題のリモート先に持っていくbashrcの構成です。
個人的には「入ったサーバーが検証用だと思い込んでて実は本番環境だった」で大事故をやらかしたことがあるのでそれを防ぐためにも、リモートサーバーのホスト名毎にシェルの文字色を変更するようにしてます。
検証環境とか本番環境とかは皆様の環境に合わせて色のセットも含めて変更してみてください。

#!/bin/bash

# bashカラーの定義
c_red="\e[31m"
c_gre="\e[32m"
c_yel="\e[33m"
c_blu="\e[34m"
c_mag="\e[35m"
c_cya="\e[36m"
c_off="\e[m"

# サーバー共通情報の読み込み
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# 標準エディタ環境変数の設定
EDITOR=vim

# ロケール環境変数の設定
LANG=ja_JP.UTF-8

# エイリアスの設定
alias dc='docker-compose'
alias grep='grep --color'
alias tree='tree -C'

# MacOSとLinuxで差分のあるものの設定
if [ "$(uname)" = "Darwin" ]; then
    alias ls='ls -FG'
    alias ll='ls -FGal'
    HN=`scutil --get LocalHostName`
        export BASH_SILENCE_DEPRECATION_WARNING=1
else
    alias ls='ls -F --color=auto'
    alias ll='ls -Fal --color=auto'
    HN=`hostname`
fi

# 環境によるコンソールカラーの変更
## 本番環境
if [ `echo $HN | grep -c -e "honban"` -eq 1 ] ; then
        PS1="\[\n${c_red}\]\D{%Y/%m/%d} \t \u@\h -> \[${c_yel}\]\n\w -> \n$ \[\e[0m\]"
## 本番検証環境
elif [ `echo $HN | grep -c -e "honban_kensho"` -eq 1 ] ; then
        PS1="\[\n${c_mag}\]\D{%Y/%m/%d} \t \u@\h -> \[${c_yel}\]\n\w -> \n$ \[\e[0m\]"
        eval `cat ~/.ssh-agent.info` >&/dev/null
        alias ssh='sshrc'
        alias tmux='~/bit/settings/additionalShell/extraTmux.sh'
## 検証環境
elif [ `echo $HN | grep -c -e "kensho"` -eq 1 ] ; then
        PS1="\[\n${c_gre}\]\D{%Y/%m/%d} \t \u@\h -> \[${c_yel}\]\n\w -> \n$ \[\e[0m\]"
## ローカル環境
elif [ `echo $HN | grep -c -e "local"` -eq 1 ] ; then
        PS1="\[\n${c_cya}\]\D{%Y/%m/%d} \t \u@\h -> \[${c_yel}\]\n\w -> \n$ \[\e[0m\]"
        eval `cat ~/.ssh-agent.info` >&/dev/null
        alias ssh='sshrc'
        alias tmux='~/bit/settings/additionalShell/extraTmux.sh'
else
    echo "未設定のhostです"
fi

プチ解説

基本的にはコメントアウトに書いてある通りなので解説することはあまりないのですが、エイリアスなどもリモートに持っていけるので、お気に入りのコマンドがあれば書いておくと快適性UPです。
なお、sshrcはQiitaの記事にも記載がある通りvimrcやtmuxrcも持っていけます。
私も持って行っていて、その詳しい情報は別記事にまとめてますので合わせてご覧いただければ幸いです。

お疲れ様でした。