👻

【Linux】シェル環境のカスタマイズと使用(その1)

2023/08/03に公開
  • 対話型シェル起動時に読み込まれるファイル
    ~/.bashrc
    /etc/bashrc

  • Debian系の代表的な派生ディストリビューション
    Ubuntu: デスクトップおよびサーバー向けに人気のあるディストリビューションで、ユーザーフレンドリーな操作性が特徴。

  • Debian系のシステムで全ユーザーのbash起動時に共通の処理を実行させるためには、/etc/bash.bashrc ファイルを編集する必要がある。このファイルは、全てのユーザーがbashシェルを起動した際に共通で読み込まれる設定ファイル。

  • ログインシェルとしてbashが起動した際に、読み込む設定がない場合には .bash_profile もしくは .bash_login が読み込まれる。これらのファイルはユーザーのホームディレクトリに存在する。

  • .bash_profile と .bash_login の両方が存在する場合、.bash_profile が優先して読み込まれる。ただし、.bash_profile が存在しない場合には .bash_login が読み込まれる。これらのファイルはログインシェルが起動した際に、ユーザーの環境や設定をカスタマイズするために利用される。

  • ログインシェルとしてbashが起動した際に、読み込む設定がない場合は .bashrc ファイルが読み込まれまない。.bashrc ファイルは非ログインシェル(例えば、新しいターミナルウィンドウを開いた際のシェル)が起動した際に読み込まれる設定ファイル。

※ 補足
具体的に、以下のような順序でbashが読み込む設定ファイルが決定される。

・ログインシェルが起動した場合:
.bash_profile(または .bash_login)が存在する場合は、そのファイルが読み込まれる。
.bash_profileが存在しない場合で、.bash_loginが存在する場合は、そのファイルが読み込まれる。
1と2のファイルが存在しない場合は、.profileが読み込まれます(ただし、Ubuntuなど一部のディストリビューションではデフォルトで .profile も .bash_profile も読み込まない)。

・非ログインシェルが起動した場合:
.bashrcファイルが存在する場合は、そのファイルが読み込まれる。
このように、ログインシェルでは .bash_profile や .bash_login が読み込まれることが期待され、非ログインシェルでは .bashrc が読み込まれることが期待される。ただし、システムや設定によって動作が変わることもあるため、環境に応じて適切な設定を行うことが重要。

  • envコマンドをオプションなしで実行した場合、現在のシェルの環境変数のリストが表示される。

  • シェル関数を確認するためのコマンド

bash
declare -f
---または---
set
---または---
typeset -f
zsh
functions
---または---
typeset -f
  • bashのログイン時、環境設定ファイルを読み込む順番
    /etc/profile:
    システム全体の環境変数や共通の設定を定義するためのファイル。システム全体の設定がここで行われる。

    ~/.bash_profile:
    ユーザーごとの個別の設定を定義するためのファイル。ログイン時にこのファイルが存在する場合、他のファイルは読み込まれない。

    ~/.bash_login:
    ~/.bash_profileが存在しない場合、代わりにこのファイルが読み込まれる。

    ~/.profile:
    ~/.bash_profileと~/.bash_loginも存在しない場合、このファイルが読み込まれる。

Discussion