Help us understand the problem. What is going on with this article?

.bash_profileと.bashrcについて

More than 5 years have passed since last update.

はじめに

.bash_profile.bashrcでユーザ環境のカスタマイズはよくやってますが、
その使い分けについてまじめに確認したことがなかったのでメモをしておきます。

.bash_profileと.bashrc

ユーザがLinuxにログインすると、ホームディレクトリにある.bash_profile
.bashrcが実行されるようになっています。

ユーザは、これらの中に環境変数やコマンドのエイリアスの設定を自由に追加できます。

.bash_profileと.bashrcの使い分けについて

sshでログインすると、.bash_profile -> bashrcの順に実行されます。
これは.bash_profileのソースの上のあたりを見るとすぐにわかります。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

***以下略***

しかし、すでにログインしている状況で、新たにシェル(bash)を起動した際は
.bashrcだけが実行されます。

とくに、Linuxデスクトップ環境では、テスクトップ上で新しいコマンド端末を開いた際は
.bashrcのみが実行されます。

つまり、

  • ログイン時に一回だけ実行したい時

-> .bash_profileに記載

  • シェルを起動する度に実行したい時(一般的な設定)

-> .bashrcに記載

テスト

上記のことを確かめるために簡単なテストをしました。

.bash_profileに下記を追記

# テスト
echo '.bash_profileに記載されたechoです'

.bashrcに下記を追記

# テスト
echo '.bashrcに記載されたechoです'

ターミナルソフトで対象のサーバにsshログインすると、.bashrcに書いたものと
.bash_profileに書いたものが表示されました。

.bashrcに書いたものが先に表示されているのは、.bash_profile内で.bashrc
呼び出された後の行にecho '.bash_profileに記載されたechoです'を書いている
ためです。

Last login: Thu Jun 12 13:51:12 2014 from office-gw01.bbtower.co.jp
.bashrcに記載されたechoです
.bash_profileに記載されたechoです
[testuser@www ~]$

ログインした後に、bashコマンドをたたくと、.bashrcの内容のみが表示されます。
bash
[testuser@www ~]$ bash
.bashrcに記載されたechoです

ちなみにsuコマンドに-をつけるかつけないで挙動が変わります。
-をつけると、ログインシェルが呼び出されます。

この違いも一応見てみると、下記のとおり

[testuser@www ~]$ su testuser
パスワード:
.bashrcに記載されたechoです

[testuser@www ~]$ su - testuser
パスワード:
.bashrcに記載されたechoです
.bash_profileに記載されたechoです

.bash_profileや.bashrcの大元

.bash_profile.bashrcの大元は/etc/skelにあります。
つまり、useraddコマンドでユーザを作成すると、このディレクトリ内の
ファイルがサブディレクトリを含めて、作成したユーザのホームディレクトリに
コピーされます。

$ ls -la /etc/skel/
合計 36
drwxr-xr-x.   4 root root  4096  5月  9 20:21 2014 .
drwxr-xr-x. 114 root root 12288  6月 12 13:50 2014 ..
-rw-r--r--    1 root root    18  7月 18 22:19 2013 .bash_logout
-rw-r--r--    1 root root   176  7月 18 22:19 2013 .bash_profile
-rw-r--r--    1 root root   124  7月 18 22:19 2013 .bashrc

以上のことから、すべてのユーザのホームディレクトリに共通に配布したい
ファイルがある場合は、事前に/etc/skel内においておくと、確実です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした