LinuxなどのUNIX系OSを使って作業している時にbashというシェルを使うことが多い。よく使う設定は設定ファイルに書いておくと便利ですね。しかし、その設定ファイルが.bash_profileと.bashrcの2つある。どちらもログインすると読み込んでくれるようですが、なぜ2つあるのでしょう。この2つは厳密には違うぞ。何が違い、どう使い分けるのかを、UNIX歴も長いプログラマであるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。WindowsだけでなくUNIXやLinux歴も長い。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

起動の仕方で呼ばれ方も違う?bash設定ファイルの違い

image by iStockphoto

WindowsやMacではマウスでデスクトップ画面を操作するGUI(Graphical User Interface)が主流です。しかし、LinuxなどのUNIX系OSではテキストでコマンドを操作するCUI(Character User Interface)が主流になっています。

WindowsにコマンドプロンプトといったCUIがありますし、LinuxなどでもGUIが利用可能です。ただ、使い方の違いからLinuxなどではCUIを使うことが多くなります。そのCUIで使うのがbash。そして欠かせないのが.bash_profileや.bashrcです。ざっくり言えばこの2つは呼ばれる順番や書く内容が違います。まずは簡単に違いを見ていきましょう。

.bash_profile:ログイン時の環境を設定

CUIでbashを使う際に便利な設定を書いておくのが.bash_profileや.bashrcです。この時、最初に呼ばれるのが.bash_profileになります。ここに書くのはログインした際に必要な設定です。

具体的には環境変数を書くことになっています。環境変数とは何か?というのは後で詳しく説明しますので、まずはそういうものと覚えてください。

\次のページで「.bashrc:シェルのための設定」を解説!/

.bashrc:シェルのための設定

.bashrcに書くのはシェルに必要な設定です。WindowsやMaなどでもデスクトップを自分の使いやすいようにアイコンを配置したり、設定を変更したりすることがありますよね。CUIの場合はbashがデスクトップにあたるので、使いやすいように様々な設定が可能です。そのために使うのが.bashrcになります。

具体的にはよく使うコマンドの短縮形を登録するエイリアスや、シェルを便利に使うための設定です。こちらも詳しいことは後で説明します。どちらの場合も、このファイルにはこういうものを書きましょうというルールですが、そうしないとエラーになるというものではありません。ただ、内容によっては思ったのと違うことになったり、無駄だったりするので、このルールがあります

どこにある?順番は?bash設定ファイルの基礎

image by iStockphoto

ざっくりと何を書くべきかの説明をしました。しかし、そもそもどこにあるのか、そんなファイルが見つからないという場合もあるでしょう。また、2つファイルがあるならばどちらが先に読まれるのかも気になりますよね。まずはその辺りを説明します。

大事なものは隠しておく?見えない設定ファイル

まず場所について。ログインすると最初にいる場所がホームディレクトリです。ここに.bashrcや.bash_profileがあります。Windowsではファイルエクスプローラー、MacならFinderでファイルを見ることができますよね。CUIの場合はコマンドを使います。Linuxなどでファイルの一覧を見るコマンドは「ls」です。その通りに打ってみましょう。

しかし、.bash_profileや.bashrcが表示されないですよね。実はLinuxなどでは頭がドット(.)で始まるファイルは設定ファイルというお約束です。そのため、誤って消したり書き換えたりしないように、単に「ls」と打っても表示されません表示するには「ls -a」と打ちましょう。今度は表示されたと思います。

$ pwd  ← 現在のディレクトリを確認
/home/taro   ← taroさんのホームディレクトリ
$ ls   ← lsコマンドを打っても何も表示されない
$ ls -a   ← ls -aとすると表示される
. .. .bash_history   ← 先ほどはなかった「.bash_history」が出てくる
$

注)上のように.bashrcや.bash_profileがない場合もあるので注意

順番は?「.bash_profile」と「.bashrc」はどちらが先か

設定などを書くファイルが.bashrcと.bash_profileの2つがありますが、どちらが先になるでしょう。実は.bash_profileが先で、次が.bashrcです。誤って両方に同様な設定を書いてしまった場合、後に読む方が有効ですので、.bashrcに書いた内容の方が有効になります。

\次のページで「どう使い分ける?「.bash_profile」と「.bashrc」の違い」を解説!/

どう使い分ける?「.bash_profile」と「.bashrc」の違い

image by iStockphoto

それぞれのファイルに何を書くかを説明しました。実は、片方だけに書いても動きますし、逆に書いても動きます。ルールとしてそうなっているだけなので、どちらも同じように書かれているように動くのです。それではなぜ分ける必要があるのかを説明します。その前に、bashやシェルというのはどういうものか、から始めますね。

そもそもシェルって何?bashとは

シェルとはLinuxなどでコンピューターに命令を与えるための窓口です。ここでコマンドを打つと、それが実行されて、結果が表示されます。同じようなものはWindowsやMacにも。Windowsではスタートメニューから「コマンドプロンプト」、Macでは同じくランチャーから「ターミナル」を呼び出すと、文字を入力できるウィンドウが開くと思います。これがLinuxなどでいうシェルにあたるものです。

ただ、Windowsではマイクロソフトが作ったコマンドプロンプト(またはPower Shell)しか使うことができません。しかし、Linuxなどではシェルを好きなように入れ替えることができます。ほとんどのLinuxでは最初からbashというシェルがインストールされているのでこれを使う人が多いです。しかし、他にも多くのシェルがあるので入れ替えて使う人もいます。

何が違う?環境変数とシェル変数

.bash_profileには環境変数を書くと説明したのを覚えていますか。実は環境変数と似たものにシェル変数というのもあります。似ていますが何が違うのでしょう。

実はシェルはいくつも呼び出すことができます。また、シェルの中からシェルを呼び出すことも可能です。その時、それぞれのシェルで共通して使えるのが環境変数個々のシェルの中だけで有効なのがシェル変数。慣例として環境変数は大文字を使います。少し難しいでしょうか。実際のサンプルを見てみましょう。

$ HOGE=hoge;export HOGE ← 環境変数HOGEをつくる(exportが必要)
$ hogege=hogege ← シェル変数hogegeをつくる
$ echo $HOGE ← 環境変数HOGEが表示される
hoge
$ echo $hogege ← シェル変数hogegeが表示される
hogege
$ bash ← 別のシェルを起動
$ echo $HOGE ← 環境変数HOGEが表示される(受け継がれている)
hoge
$ echo $hogege ← シェル変数hogegeは表示されない(受け継がれていない)

$

ログインとシェル起動の違い?どちらに何を書くか

シェルの中からシェルを起動できるのはわかったけれど、そんなことしないと思いませんでしたか?実はシェルから呼び出したコマンドにも環境変数は引き継がれます。ここでシェル変数と環境変数の相違が意味を持つのです。そして、.bash_profileと.bashrcの違いも。

そこから実行するコマンドにも引き継がれて欲しい内容を環境変数に書きます。それをあらかじめ用意しておくのが.bash_profileです。一方、いちいち引き継がなくても良い、そのシェルの中だけで一時的に使うものや、シェル専用の内容はシェル変数を使います。それをあらかじめ用意するのが.bashrcです。この2つは有効期間が違うわけですね。ずっと残しておくノートと、一時的に走り書きするメモ帳と思えばわかりやすいですよね。

\次のページで「環境を整える「.bash_profile」、シェルのための「.bashrc」」を解説!/

環境を整える「.bash_profile」、シェルのための「.bashrc」

.bashrcはシェルのための設定を書くために使います。その一例がよく使うコマンドの短縮形を登録するエイリアスや、シェルそのものの設定です。

一方、.bash_profileは環境変数を書くもの。環境変数はシェルの中だけではない、そこから呼び出すコマンドやプログラムなどにも引き継いで欲しい内容を書きます。一例としては、コマンドをどこのディレクトリから探すかを指定するPATHや、呼び出すコマンドで使用するための設定などです。両者の違いや使い分けは最初は難しいかもしれませんが、それを使うのがシェルなのか、コマンドやプログラムなのかを考えましょう。

" /> 「.bash_profile」と「.bashrc」の違いとは?シェルの起動法で違う?プログラマーがわかりやすく解説 – Study-Z
IT・プログラミング雑学

「.bash_profile」と「.bashrc」の違いとは?シェルの起動法で違う?プログラマーがわかりやすく解説

LinuxなどのUNIX系OSを使って作業している時にbashというシェルを使うことが多い。よく使う設定は設定ファイルに書いておくと便利ですね。しかし、その設定ファイルが.bash_profileと.bashrcの2つある。どちらもログインすると読み込んでくれるようですが、なぜ2つあるのでしょう。この2つは厳密には違うぞ。何が違い、どう使い分けるのかを、UNIX歴も長いプログラマであるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。WindowsだけでなくUNIXやLinux歴も長い。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

起動の仕方で呼ばれ方も違う?bash設定ファイルの違い

image by iStockphoto

WindowsやMacではマウスでデスクトップ画面を操作するGUI(Graphical User Interface)が主流です。しかし、LinuxなどのUNIX系OSではテキストでコマンドを操作するCUI(Character User Interface)が主流になっています。

WindowsにコマンドプロンプトといったCUIがありますし、LinuxなどでもGUIが利用可能です。ただ、使い方の違いからLinuxなどではCUIを使うことが多くなります。そのCUIで使うのがbash。そして欠かせないのが.bash_profileや.bashrcです。ざっくり言えばこの2つは呼ばれる順番や書く内容が違います。まずは簡単に違いを見ていきましょう。

.bash_profile:ログイン時の環境を設定

CUIでbashを使う際に便利な設定を書いておくのが.bash_profileや.bashrcです。この時、最初に呼ばれるのが.bash_profileになります。ここに書くのはログインした際に必要な設定です。

具体的には環境変数を書くことになっています。環境変数とは何か?というのは後で詳しく説明しますので、まずはそういうものと覚えてください。

\次のページで「.bashrc:シェルのための設定」を解説!/

次のページを読む
1 2 3 4
Share: