bashが起動時〜bashrcとbash_profileについて〜
2018/08/305 分で読める記事 — In プログラム

はじめに


こんにちは、みなさん。
本日は普段なにげなくターミナルで入力していた

$source ~/.bash_profile

このコマンドがどのような役割をしているのか気になったので、今回ちゃんと調べてみました。

知らないものをそのまますると大きなトラブルを引き起こしかねない。
健康と同じ。では早速↓↓

結論:$source ~/.bash_profile について


結論から言えば、、、"編集したbashrcbash_profileに反映させるためのもの"

まずターミナルであるbashがどのように起動し、処理をしてくれるのか。実行手順についてから書いていこうと思います。

実行手順


ユーザーがログインに成功した後、bashは「ログインシェル」として一般的に以下のような流れでファイルを順次検索し、ファイルが存在していれば実行し起動します。

bashログイン
↓
/etc/profileを実行
↓
/etc/bash.bashrc(存在しなければ無効)
↓
/etc/profileによって、/etc/profile.dディレクトリ配下のすべてのファイルを実行
↓
ログインユーザーのホームディレクトリにある .bash_profileを実行
↓
.bash_profileによって、.bashrcを実行
↓
.bashrcによって、/etc/bashrcを実行
↓
bash起動

/etc...そのコンピューター用のシステム設定ファイルなどを格納するために使われるディレクトリのこと。

おまけコマンド↓

$ cd ~ #ホームディレクトリへ移動


bash起動時(bashrcとbash_profileについて)


ここから本題になります!!
実行手順で頻繁に出てくるbash_profilebashrcについて先に説明していきます。

.bash_profile

.bash_profile はログイン時にのみ実行されます。具体的な用途は:
環境変数を設定する (export する変数) 環境変数はプロセス間で勝手に受け継がれるのでログイン時のみ設定すれば十分です。

exportコマンド...環境変数を定義・リスト表示するコマンドです。

環境変数...コンピュータさんが持っている変数のこと。コンピュータの人格に相当するソフト(OS)が動いているときに使える変数。OS,Windows等

.bashrc

.bashrc は対話モードの bash を起動する時に毎回実行されます。具体的な用途は:

環境変数でない変数を設定する (export しない変数) エイリアスを定義する シェル関数を定義する コマンドライン補完の設定をする これらは bash を起動する度に毎回設定する必要があるものです。

エイリアス...あだ名のこと。PCに全選択を指示する為に、コマンドA(command + A)してとした時の、「コマンドA」のこと。「全選択」コマンドに「コマンドA(command + A)」というエイリアスが割り当てられている

シェル...人間の入力をコンピュータに伝えるプログラム。会社でいう受付窓口のこと。

コマンドライン...キーボードだけで操作する画面、もしくは、入力行のこと。コマンドプロンプト(黒い画面)上の入力行が「コマンドライン」です。


/.bash_profileと/.bashrcの違い


~/.bash_profileはbashがログインシェルとして起動されたときにのみ実行されます(ログインした時のみ)が、~/.bashrcはログイン時も含めbashが起動するたびに実行される点が違います。

例えば、、、コマンドラインからのbashの起動、suコマンドで別のユーザーになった場合など、ログインシェルとしての起動ではない場合は、~/.bashrcのみが実行されます。

suコマンド...ユーザを切り替える(Switch User)。ユーザーを切り替えるのに使用する。


中に記述するもの

~/.bash_profileには、、、 ユーザーがログイン時にのみ行う処理(設定)を記述します。

~/.bashrcには、、、 シェル変数や環境変数、エイリアスなどユーザー環境の基本となる設定を記述するのが一般的です。


最後に"sourceコマンド"について


bashの起動時に読み込まれるファイルはテキストファイルのため、簡単に編集できます。しかし、編集しただけでは変更が反映されず、ログアウトしてログインし直すか、次のようにsourceコマンドを使用する必要があります。(ログイン、ログアウトの代わり?として使ってます。厳密には違うと思いますが。。。)

$ source .bash_profile
#主にシェルの設定ファイルを反映させる際に使用します。

ここで、「source」コマンドは、ファイルに書かれたコマンドを現在のシェルで実行する。というコマンドです。主にシェルの設定ファイルを反映させる際に使用します。

意味としては、編集した bashrcbash_profileに反映させる為のコードです。

おまけ


.bashrcに書いた設定が反映されないけど.bash_profileに書くといける場合は、.bash_profileから.bashrcを読み込む処理ができていないからです。


おわりに


自分用といてメモしたおものなので読みづらさなどあるかと思いますが、間違った点等いくつかあるかと思います。ご教示いただけますと幸いです。

誰かの糧になれたらうれしいです!