.bash_profile, .bash_login, .profile, .bashrc の使い分けに関する暴論

Bash で読み込まれる設定ファイルのうち,ユーザ特有のものは,.bash_profile, .bash_login, .profile, .bashrc があります。

このへんの実際の状況はかなり複雑ですが,単純化すると以下のようになっています。

1) ログインシェルとして実行された場合,.bash_profile, .bash_login, .profile の順番で存在が確認され,最初に見つかったものが読み込まれる。

2) ログインシェルでない場合も含め,そのあとに .bashrc が読み込まれる。

この使い分けをどうするべきかについては,いろいろな見解があります。

しかし個人的には,管理上どうしても残したい場合を除いて,.bash_profile, .bash_login, .profile の存在はもう忘れていいのではないかと思っています。

.bash_profile, .bash_login, .profile を自分で編集すると,起動順序や,X(ないし Wayland)上のターミナルエミュレータとそれ以外の違いなどに悩まされることになります(両者で挙動が変わったほうが嬉しいことというのは,今の世の中ではあんまりないでしょう)。環境変数の類は .bashrc に書いても通常は害がないし,実際いまはデフォルトで .bashrc にあるディストロが多いようです。

もちろん,.bashrc だと bash が呼び出されるたびに実行されてしまいます。これでは困ることもあります(特にグラフィカルログインする場合)。そういう処理はどうしたらいいのでしょうか。

こういったものは,シェルの設定ファイルではなく,XDG Autostart や,Systemd (user) を使うのです。XDG Autostart であれば X が起動した後にしか実行されないので,ソフトウェアが X を使おうとしても厄介なことにはなりません。通常は DE に統合されているため扱いも簡単です。Systemd のサービスとして実行すれば,前提となる状況を細かく指定できます。抽象化されるため,メンテナンスやトラブルシューティングも省力化できます。

.bash_profile や .bash_login,ましてや .profile が重要だった時代とはシステムがまったく変わっているのだから,なるべく新しい情勢にあわせて作られた仕組みを使ったほうが楽じゃないかというわけです。

コメントを残す

投稿にあたり,完全な IP アドレスが保存されます(公開されません)。

コメントはスパムフィルタで処理され,承認後に公開されます。