スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


第9回 bashの便利な機能を使いこなそう

関野史朗
2002/3/12

bashのカスタマイズ

 bashは、組み込みの「シェル変数」を使ってその動作をある程度変更できます。シェル変数の設定方法は、

$ HISTSIZE=100

のように、変数名に数値あるいは文字列を代入する形になります。
 組み込み変数にどんなものがあるか、ざっと見てみましょう。

ヒストリ関係

HISTCMD
 現在のコマンドのヒストリ番号。

HISTCONTROL
 ignorespace:スペースやタブで始まる行をヒストリに記録しない
 ignoredups:入力が最後のヒストリと一致する場合に記録しない
 ignoreboth:ignorespaceとignoredups両方を指定
 指定なし:すべての入力をヒストリに記録する

HISTFILE
 ヒストリファイル名。
 例:HISTFILE=/home/username/.bash_history

HISTFILESIZE
 ヒストリファイルに格納するヒストリの最大数。

HISTSIZE
 ヒストリとして記録されるコマンドの最大数。HISTSIZEの値を小さくした場合、過去のヒストリは切り捨てられる。例えば、値を100から50に変更すると、残るのは最近の50行までとなる。

メール関係

MAIL
 メールの到着を確認する対象となるべきファイルの名前。
 例:MAIL="/var/spool/mail/$USER"

MAILCHECK
 メールをチェックする間隔。単位は秒。

MAILPATH
 メールの到着を確認する対象となるべきファイルの名前。複数のファイル名を「:」(コロン)で区切って指定できる。
 例:MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'

プロンプト関係

PS1
 通常のプロンプト。いくつかの特殊文字が使える。

 
特殊文字
意味
  \d 日付
  \h ホスト名
  \n 改行
  \s シェルの名前
  \t 時間
  \u ユーザー名
  \w ワークディレクトリ
  \W ワークディレクトリのベース名
  \# コマンド番号
  \! ヒストリ番号
  \$ 有効なUIDが0なら「#」、それ以外なら「$」
  \nnn 8進数での文字コード
  \\ バックスラッシュそのもの
  \[ 非表示文字の開始
  \] 非表示文字の終了

 例:以下、「PS1=xxx」が入力部分。

$ PS1="\d "
Wed Mar 6 PS1="\h "
sun PS1="\s "
bash PS1="\t "
02:27:39 PS1="\u "
tom-a PS1="\w "
~ PS1="\W "
tom-a PS1="\# "
27 PS1="\! "
37 PS1="\u@\h\$ "
tom-a@sun$

PS2
 継続行に表示されるプロンプト(セカンダリプロンプト)。forコマンドでdo〜doneの部分を入力するときなどに使われる。

パス関係

PATH
 コマンド検索パス。「:」で区切った複数のパス名を記述する。

CDPATH
 cdコマンドに対する候補を「:」で区切って複数記述する。

そのほか参照用

HOME
 ホームディレクトリ。

SECONDS
 シェルが呼び出されてからの秒数。

BASH
 起動しているシェルの実行可能ファイルへのパス名。

BASH_VERSION
 起動しているbashのバージョン番号。

PWD
 カレントディレクトリ。

OLDPATH
 cdコマンド実行前のディレクトリ。

bashの設定ファイル

 これらのシェル変数をいちいちタイプして設定するのは面倒です。そこで、普通は~/.bashrcや~/.bash_profileといったファイルに書き込んでおきます(編注)。

編注:以下に見るように、/etc/profileが最初に読み込まれるファイルだが、このファイルの内容は全ユーザーに適用されるため、一般ユーザーが変更することはできない。ユーザーごとの設定は、ホームディレクトリのドットファイルを使用する。

ログイン時に読み込まれる設定ファイル

 bashの関連ファイルには、次のようなものがあります。

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc
  • ~/.bash_logout

 ユーザーがログインすると、まず/etc/profileを読み込み、次に~/.bash_profileを読み込みます。~/.bash_profileが存在しない場合は、~/.bash_loginを読み込みます。~/.bash_loginもない場合は~/.profileを読み込みます。~/.bash_logoutは、ログアウト時に読み込まれるファイルです。

 .bashrcは、プロセスとしてbashを起動したときに読み込まれます。つまり、いったんログインした後でも、

$ bash

などとして新しくbashを起動するたびに読み込まれるというわけです。

 どれも単なるテキストファイルですから、エディタで簡単に編集できます。しかし、編集しただけでは変更が反映されません。いったんログアウトしてもう1度ログインし直すか、sourceコマンドを使って、

$ source .bash_profile

$ source .bashrc

とする必要があります。

 .bash_profileと.bashrcの使い分けですが、ログイン時に一度設定すればいいものは前者に、bashを起動するたびに設定する必要のあるものは後者にするのが原則です。もっとも、私の場合はどちらも同じなので、.bash_profileの内容は

source .bashrc

という1行しかありません。

2/2

Index
Windowsユーザーに教えるLinuxの常識
  コマンドに別の名前を付けて使いやすく
ファイル名補完でタイプの手間とミスを減らす
ワイルドカードで複数ファイルを一括指定
過去に入力したコマンドを実行する
  bashのカスタマイズ
 bashの設定ファイル

連載 Windowsユーザーに教える Linuxの常識


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します
Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
@IT Sepcial
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Sepcial
ソリューションFLASH