bashの便利な機能を使いこなそう:Windowsユーザーに教えるLinuxの常識(9)(2/2 ページ)
「シェル」。人とOS(カーネル)をつなぐもの。シェルの使い勝手はOSの使い勝手とほぼ同義である。bashの機能を使いこなせば、Linuxはさらに使いやすく、快適になるだろう。そこで、操作をサポートする機能の使い方やbashのカスタマイズ方法を紹介する。
bashのカスタマイズ
bashは、組み込みの「シェル変数」を使ってその動作をある程度変更できます。シェル変数の設定方法は、
$ HISTSIZE=100
のように、変数名に数値あるいは文字列を代入する形になります。
組み込み変数にどんなものがあるか、ざっと見てみましょう。
ヒストリ関係
●HISTCMD
現在のコマンドのヒストリ番号。
●HISTCONTROL
ignorespace:スペースやタブで始まる行をヒストリに記録しない
ignoredups:入力が最後のヒストリと一致する場合に記録しない
ignoreboth:ignorespaceとignoredups両方を指定
指定なし:すべての入力をヒストリに記録する
●HISTFILE
ヒストリファイル名。
例:HISTFILE=/home/username/.bash_history
●HISTFILESIZE
ヒストリファイルに格納するヒストリの最大数。
●HISTSIZE
ヒストリとして記録されるコマンドの最大数。HISTSIZEの値を小さくした場合、過去のヒストリは切り捨てられる。例えば、値を100から50に変更すると、残るのは最近の50行までとなる。
メール関係
メールの到着を確認する対象となるべきファイルの名前。
例: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といったファイルに書き込んでおきます(編注)。
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行しかありません。
Copyright © ITmedia, Inc. All Rights Reserved.