tands_bの日記

技術メモ。大したことは書きません

【bash】設定・組み込み変数

bash設定ファイル

 bashにはログイン時やbashシェル実行時に読み込まれる設定ファイルが存在する。いくつか種類や読み込まれる順番があるのでここで見ていく。

ファイルパス 概要
/etc/profile 全ユーザのログイン時に読み込むデフォルトの設定ファイル。
~/.bash_profile ログイン時に一番最初に読み込まれるファイル。ログインシェルだけが読み込み、サブシェルは.bashrcから設定を読み込むためログインシェルとサブシェルでコマンドを分けることができる。
~/.bash_login Cシェルの.loginに由来する。.bash_profileが存在しない場合に読み込まれる。
~/.profile BourneシェルとKornシェルの.profileに由来する。.bash_profileも.bash_loginも存在しない場合に読み込まれる。
~/.bashrc bashを実行する際に読み込まれる設定ファイル。

組み込み変数

 一般的に知られるUNIXの組み込み変数のうち、気になったものをピックアップ。

変数名 概要
HISTCMD 現在のコマンドの履歴番号。
HISTFILE コマンド履歴が保存される履歴ファイル。
HISTFILESIZE 履歴リストに保存するコマンドラインの最大数。
HISTSIZE コマンド履歴に保存するコマンドの最大数。
HISTTIMEFORMAT historyコマンド実行時に表示されるタイムスタンプフォーマット指定。
FCEDIT fcコマンドで使用するエディタのパス。
PS1 プライマリプロンプト文と呼ばれるシェルプロンプト。プロンプトの表示名を変更できる。
CDPATH cdコマンド実行時にサブディレクトリを検索するパス。
カレントディレクトリ以下に移動対象が存在しない場合、CDPATHに設定されたパス以下を探しにいく。
OLDPWD 最後のcdコマンドが実行される前のディレクトリ。
IFS 項目の区切り記号で、デフォルトは半角スペース。
echo "$*" などで区切りを「,」にしたい場合、IFS=","にすれば変更可能。

PS1設定

 使いそうなものだけピックアップ。

コマンド 概要
\A 「HH:MM」表記(24時間表記)での現在時刻。
\T 「HH:MM:SS」表記(12時間表記)での現在時刻。
\t 「HH:MM:SS」表記(24時間表記)での現在時刻。
\@ 「午前/午後」付の12時間表記での現在時刻。
\d 「曜日、月、日」表記での日付。
\e ASCIIエスケープ記号。
\H ホスト名。
\h 最初の.までのホスト名。
\n 改行。
\s シェル名。
\u ユーザ名。
\w 現在の作業ディレクトリ。
\W 現在の作業ディレクトリのベース名。
# 現在のコマンドのコマンド番号。
\$ 実行ユーザIDが0であれば#、それ以外は$を表示。