検索
連載

bashの便利な機能を使いこなそうWindowsユーザーに教えるLinuxの常識(9)(2/2 ページ)

「シェル」。人とOS(カーネル)をつなぐもの。シェルの使い勝手はOSの使い勝手とほぼ同義である。bashの機能を使いこなせば、Linuxはさらに使いやすく、快適になるだろう。そこで、操作をサポートする機能の使い方やbashのカスタマイズ方法を紹介する。

Share
Tweet
LINE
Hatena
前のページへ |       

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行しかありません。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る