シェル(1)Bashの基本設定

Bashとは

シェルは、コマンドライン・インタプリタとも呼ばれ、ユーザが入力したコマンドをカーネルに渡すプログラムである。シェルには、Bashcshzshなど様々な種類が存在するが、LinuxやMac OSでは、Bashが標準シェルとなっている。/bin/shは、Linuxにおける標準シェルを示しており、通常はBashへのシンボリックリンクとなっている。

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4  9月 26 15:52 2014 /bin/sh -> bash

なお、Bashを/bin/shとして実行させるとPOSIX準拠モードで起動するため、厳密にはBashと挙動が異なる。以下のコマンドを実行することで、インストール済みのシェルを確認することができる。

$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

ファイルディスクリプタ

シェルは、実行するプログラムの以下の値を取得することが可能となっている。

ディスクリプタ 略記 内容
<0 < 標準入力
>1 > 標準出力
>2 >2 標準エラー出力

標準出力も標準エラー出力も同時に出力したい場合は、2>&1と記述する。

ショートカット

カーソルの移動や編集を行う際に以下のショートカットを使うと便利。

コマンド 意味 内容
Ctrl + a ahead 行頭に移動
Ctrl + e end 行末へ移動
Alt + b before 一単語左へ
Alt + f foward 一単語右へ
Ctrl + d delete カーソルの文字を消す
Ctrl + h 0x08 (Backspace) カーソルの左の文字を消す
Ctrl + w word カーソルの左の単語を消す
Ctrl + u unix-line-discard カーソルより左の文字を全てカット
Ctrl + k kut カーソルより右の文字を全てカット
Ctrl + y yank ペースト
Ctrl + p previous 前の履歴を表示
Ctrl + n next 次の履歴を表示
Ctrl + r reverse 過去の履歴から検索
OLDPWD 直前にいたディレクトリ

設定ファイルの読み込み順序

bashの設定ファイルはいくつもあるが、以下の順序で読み込まれるらしい。

読み込み順序 読み込み時 対象 ファイル
1 ログイン時 全ユーザ /etc/profile
2 ログイン時 各ユーザ ~/.bash_profile
3 ログイン時 各ユーザ ~/.bash_login
4 bash起動時 各ユーザ ~/.bashrc
5 ログイン時のシェル終了時 各ユーザ ~/.bashrc

PATHを通すときなどに無意識に~/.bashrcにPATHを書いてたけど、~/.bashrcにPATHを書いてbashを複数タブで起動すると、その度に同じPATHが追加されてしまうようだ。というわけで、設定ファイルは、~/.bash_profileに書いておけばいいということか。

設定ファイルの内容

historyコマンド時に時間情報も表示させると便利。
過去のコマンドが消えてしまわないように、historyの上限値も増やしておくと、なお便利。
ちなみに、![履歴番号]で、history内の過去のコマンドを実行できる。

# History
HISTSIZE=50000
HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '

# Path
PATH="$PATH":/usr/local/bin:/bin:/sbin:/usr/bin

コマンドの実行

シェルで実行ファイルを実行する場合、PATH付きで指定しなければいけない。カレントディレクトリの実行ファイルを、

$ ./a.out

などと書くのは上記ルールによる。ただし、シェルにPATHが通っている場合は、PARHを省略できる。実行したファイルのPATHを確認するにはwitchコマンドを使って、

$ witch ls

alias ls='ls --color=auto'
	/bin/ls

とすればよい。また、cd, echo, pwdなどのコマンドは、ビルトインコマンドと呼ばれ、シェル自身に組み込まれたコマンドである。コマンドのタイプを確認するためには、

$ type pwd
pwd is a shell builtin

typeコマンドを使用する。