Bashプロファイルの見直し
今日もAnsibleやらないぞ!!っといったけど実際は、改修作業を行っておりました。
やめられないだ!!!
ただ今日のメインは、Bashの設定を行いました。
Ansibleが出てきたのは、検証環境の実装などは全てAnsibleで行っているためです。
本題:bashの話
bashの設定ファイルには、いろいろありますがコト見た目(プロンプト)と言うと以下の2つのファイルが重要になってくると思います。
.bashrc
.bash_profile
何が違うかと言えば.bash_profileの方は、ログイン時に1度しか読み込まれないのに対して.bashrcの方は、シェルを呼び出すごとに読み込まれる。
なるほど!
で!?何に使うの?
っとなると思うのですが使い方として.bash_profileの方は、環境変数例えばディレクトリのPATHなどをexportする場合に使います
例えばこんな感じ
#パスの設定
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH="$PATH:/sbin"
.bashrcの方は、コマンドのaliasなどの設定をする場合に使います。
例えばこんな感じ
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
見直した理由
なぜ今回見直しを行ったかと言いますとLinuxのターミナルログを自動で取得する設定を行いたかったからです。
Linuxのターミナルでログの取得を行い場合に使うコマンドは、scriptコマンドを使います。
このコマンド実行するとシェル再読み込みするようになります。
私のサーバー環境は、ホストをUbuntuサーバーを使っているため初期設定では、.bash_profileがないため今までずっと.bashrcのみで設定していました。
しかしここにきてscriptコマンドをシェルのログインと同時に実行するようにするために馬鹿正直に.bashrcにscriptコマンドを記入すると!
あら大変!!
scriptコマンドがシェルを呼び出し
シェルが.bashrcをよび呼び出し
.bashrcがscriptコマンドをよび・・・
っと、まぁ無限召喚状態になってしまったので初心に帰りBashの基本を構造を改めて理解して、Ubuntu環境にも今回.bash_profileを実装してscriptコマンドをそちらに設定することで解決できた形です。
これに伴って、既存の環境変数などの切り分けも行いbashの設定自体が見やすく、またとても理解しやすくなりました。
怪我の功名
日々のエラーが己のエンジニアとしての理解と、トライがその技術力の向上につながることは、よくあることだと思います。
いや、むしろ私個人の意見としては、それ以外で自分の技術を上げる方法はないと信じています。
なので日々、自分にとっての新しい技術に挑戦しトライアンドエラーを繰り返しています。
さて今回怪我の功名で得た.bash_profileのログ出力設定は最終的に以下となります。
# ターミナルログ出力
### ログディレクトリ変数の設定
LOG_DIR=~/logs/terminal/$(date +%Y)/$(date +%m)
### ログディレクトリの作成
mkdir -pv ${LOG_DIR}
### ログファイル変数の設定
SCRIPT_LOG=${LOG_DIR}/terminal_$(date +%Y%m%d)-$$.log
##ログ取得を開始
script -afq ${SCRIPT_LOG}
exit 0
これを読んだ方のお役に立てれば幸いです。