Linuxでのシェル初期化ファイルとユーザープロファイルについて


Linuxはマルチユーザーのタイムシェアリングシステムであり、複数のユーザーがログインしてシステムを使用できることを意味します。また、システム管理者は、ソフトウェアのインストール/更新/削除、実行できるプログラム、表示/編集できるファイルなど、さまざまなユーザーがシステムを操作する方法のさまざまな側面を管理するタスクを持っています。

Linuxでは、システム全体(グローバル)とユーザー固有(個人)の構成を使用するという2つの主要な方法でユーザーの環境を作成または維持することもできます。通常、Linuxシステムを操作する基本的な方法はシェルであり、シェルは、ユーザーログインが成功した後の初期化中に読み取る特定のファイルに応じて環境を作成します。

この記事では、Linuxでのローカルユーザー管理用のユーザープロファイルに関連するシェル初期化ファイルについて説明します。カスタムシェル関数、エイリアス、変数、およびスタートアッププログラムをどこに保存するかをお知らせします。

重要:この記事では、Linuxシステムで最も人気のある/使用されているシェルであるsh互換シェルであるbashに焦点を当てます。

別のシェル(zsh、ash、fishなど)プログラムを使用している場合は、そのドキュメントを読んで、ここで説明する関連ファイルの詳細を確認してください。

Linuxでのシェルの初期化

シェルが呼び出されると、シェル自体とシステムユーザーの環境をセットアップするのに役立つ特定の初期化/起動ファイルが読み込まれます。これは、事前定義された(およびカスタマイズされた)関数、変数、エイリアスなどです。

シェルによって読み取られる初期化ファイルには、次の2つのカテゴリがあります。

  • system-wide startup files – theses contain global configurations that apply to all users on the system, and are usually located in the /etc directory. They include: /etc/profiles and /etc/bashrc or /etc/bash.bashrc.
  • user-specific startup files – these store configurations that apply to a single user on the system and are normally located in the users home directory as dot files. They can override the system-wide configurations. They include: .profiles, .bash_profile, .bashrc and .bash_login.

この場合も、シェルは3つの可能なモードで呼び出すことができます。

シェルは、ユーザーが/ etc/passwdファイルに保存されている資格情報を読み取った後、/ bin/loginを使用してシステムに正常にログインした後に呼び出されます。

シェルが対話型ログインシェルとして開始されると、/ etc/profileとそれに相当するユーザー固有の〜/ .bash_profileを読み取ります。

シェルは、$/bin/bashや$/bin/zshなどのシェルプログラムを使用してコマンドラインで開始されます。/bin/suコマンドを実行して開始することもできます。

さらに、インタラクティブな非ログインシェルは、グラフィカル環境内からkonsole、terminator、xtermなどのターミナルプログラムを使用して呼び出すこともできます。

シェルがこの状態で起動されると、親シェルの環境がコピーされ、ユーザー固有の〜/ .bashrcファイルが読み取られて、追加の起動設定手順が実行されます。

$ su
# ls -la

シェルは、シェルスクリプトの実行中に呼び出されます。このモードでは、スクリプト(シェルまたは汎用システムコマンド/関数のセット)を処理し、特に明記されていない限り、コマンド間のユーザー入力は必要ありません。親シェルから継承した環境を使用して動作します。

システム全体のシェルスタートアップファイルを理解する

このセクションでは、システム上のすべてのユーザーの構成を格納するシェルスタートアップファイルについて詳しく説明します。これらのファイルには次のものが含まれます。

/ etc/profileファイル–ログイン設定用のシステム全体の環境構成とスタートアッププログラムを保存します。すべてのシステムユーザーの環境に適用するすべての構成をこのファイルに追加する必要があります。

たとえば、ここでグローバルPATH環境変数を設定できます。

# cat /etc/profile

注:RHEL/CentOS 7などの特定のシステムでは、「何をしているのかわからない限り、このファイルを変更することはお勧めしません。 /etc/profile.d/にカスタムの.shシェルスクリプトを作成して、環境にカスタムの変更を加えることをお勧めします。これにより、将来の更新でマージする必要がなくなります。」

/etc/profile.d/ディレクトリ–環境にカスタム変更を加えるために使用されるシェルスクリプトを格納します。

# cd /etc/profile.d/
# ls  -l 

/ etc/bashrcまたは/etc/bash.bashrcファイル–すべてのシステムユーザーに適用される他の構成を含む、システム全体の機能とエイリアスが含まれています。

システムに複数のタイプのシェルがある場合は、このファイルにbash固有の構成を含めることをお勧めします。

# cat /etc/bashrc

ユーザー固有のシェルスタートアップファイルを理解する

次に、システム上の特定のユーザーの構成を格納する、ユーザー固有のシェル(bash)起動ドットファイルについて詳しく説明します。これらのファイルは、ユーザーのホームディレクトリにあり、次のものが含まれます。

# ls -la

〜/ .bash_profileファイル–これはユーザー固有の環境とスタートアッププログラムの設定を保存します。以下のスクリーンショットに示すように、ここでカスタムPATH環境変数を設定できます。

# cat ~/.bash_profile

〜/ .bashrcファイル–このファイルには、ユーザー固有のエイリアスと関数が格納されています。

# cat ~/.bashrc

〜/ .bash_loginファイル–通常、システムにログインしたときにのみ実行される特定の構成が含まれています。 〜/ .bash_profileがない場合、このファイルはbashによって読み取られます。

〜/ .profileファイル–このファイルは〜/ .bash_profileと〜/ .bash_loginがない場合に読み取られます。同じ構成を保存でき、システム上の他のシェルからもアクセスできます。ここでは主にbashについて説明しているため、他のシェルがbash構文を理解していない可能性があることに注意してください。

次に、必ずしもbash初期化ファイルではない他の2つの重要なユーザー固有のファイルについても説明します。

〜/ .bash_historyファイル– bashは、システム上のユーザーが入力したコマンドの履歴を保持します。このコマンドのリストは、〜/ .bash_historyファイルのユーザーのホームディレクトリに保存されます。

このリストを表示するには、次のように入力します。

$ history 
or 
$ history | less

〜/ .bash_logoutファイル–シェルの起動には使用されませんが、ログアウト手順に関するユーザー固有の指示が保存されます。これは、ユーザーが対話型ログインシェルを終了するときに読み取られて実行されます。

実用的な例の1つは、ログアウト時にターミナルウィンドウをクリアすることです。これは、リモート接続にとって重要です。リモート接続を閉じると、ウィンドウがきれいになります。

# cat bash_logout 

追加の洞察については、さまざまなLinuxディストリビューションでこれらのシェル初期化ファイルの内容を確認し、bashのmanページも読んでください。

それは今のところすべてです!この記事では、Linuxでのシェルの起動/初期化ファイルについて説明しました。以下のコメントフォームを使用して、ご返信ください。