Linuxではシェルにbashを標準で利用することができるのですが、以下でそのbashを詳細に解説します。
◆ bash – エイリアス機能
bashシェルではエイリアスを利用することでコマンドの別名を定義したり、コマンドとそのオプションを
まとめて1つの新しいコマンドとして実行できます。エイリアス機能を使用するためにaliasコマンドを使用。
◆ 構文 : alias 別名=’ コマンド ‘
◆ 実行例 : lla と入力するだけで、ls -la という「コマンド + オプション」を実行できるように設定
$ alias lla=’ls -la’ |
◆ 実行例 : lla の入力だけで、ls -la が実行できていることの確認
$ lla total 16 |
エイリアスの設定を削除するためには、unaliasコマンドを使用します。
◆ 構文 : unalias 別名
◆ 実行例 : 定義したエイリアス「 lla 」の解除
$ unalias lla |
◆ bash – シェル関数
bashシェル上で利用できる独自の関数を定義するためには、functionコマンドを使用します。
◆ 構文 : function シェル関数名( ) { コマンド; }
◆ 実行例 : 「lsmo」という名前のシェル関数を定義して、ls -la | more コマンドが実行されるように設定
$ function lsmo() { ls -la | more; } |
◆ 実行例 : 関数の「 lsmo 」を実行すると、作成したコマンドが実行される
$ lsmototal 100 drwxr-xr-x. 2 admin admin 4096 Aug 11 05:07 . drwx——. 27 admin admin 4096 Aug 1 05:18 .. -rw-rw-r–. 2 admin admin 45 Aug 1 04:54 abc.txt -rw-rw-r–. 1 admin admin 44 Aug 1 04:54 abc.txt~ -rw-rw-r–. 1 admin admin 16 Jul 31 04:42 test5 (10th copy).txt -rw-rw-r–. 1 admin admin 16 Jul 31 04:42 test5 (11th copy).txt |
シェル関数の設定を削除するためには、unsetコマンドを使用します。
◆ 構文 : unset シェル関数
◆ 実行例 : 定義したシェル関数「 lsmo 」の削除
$ unset lsmo |
上記内容だけを読むと、aliasコマンドとfunctionコマンドの違いが分かりにくいと思いますが、解説通り
単純なコマンドの組み合わせならaliasコマンドを一般的に使用します。一方、functionコマンドは複雑な
コマンドの組み合わせの場合(例えば条件分岐を行う複雑な場合)に使用します。aliasでは設定できない。
◆ bash – シェルのオプション
setコマンドでオプションを指定することでシェルの様々なオプション機能をオン、オフにできます。
setコマンド構文において、-o とすればオプションが有効になり、+o とすればオプションが無効に。
◆ 構文 : set [ -o ] [ +o ] オプション
オプション | 説明 |
allexport | 作成または変更した変数を自動的にエクスポート |
emacs | emacs のようなキーバインドにする |
vi | vi のようなキーバインドにする |
ignoreeof | Ctrl + D のキー入力でログアウトしないようにする |
noclobber | 既存ファイルへの上書き出力 ( リダイレクト ) を禁止する |
noglob | メタキャラクタを使用したファイル名の展開を無効化する |
◆ 実行例 : 既存ファイルへの上書き出力( リダイレクト )を禁止する設定
# set -o noclobber# echo 11111 > test.txt bash: test.txt: cannot overwrite existing file ← 上書き不可のメッセージが出力 |
◆ 実行例 : メタキャラクタを使用したファイル名の展開を無効化する設定
# set -o noglob# ls *.txt ls: *.txt: No such file or directory ← メタキャラクタの * が無効であり、*.txt ファイルは存在しないと出力されている |
※ 現在設定されているsetコマンドのオプションは set -o とだけ入力することで一覧として確認できます。
◆ bash – 設定ファイル
シェルの起動時と終了時に「環境変数、エイリアス、シェル関数」などの定義を自動的に行うための設定
ファイルがあります。bashの設定ファイルには、以下のようなファイルがあります。
ファイル | 説明 |
/etc/profile | ログイン時に実行される。(全ユーザが参照する設定ファイル) |
~/.bash_profile | ログイン時に実行される。 |
~/.bash_login | ~/.bash_profileがない場合に、ログイン時に実行される。 |
~/.profile | ~/.bash_profileファイルと ~/.bash_loginファイルがない場合にログイン時に実行される。 |
~/.bashrc | bash起動時に実行される。 |
~/.bash_logout | ログアウト時に実行される。 |
/etcディレクトリ以下の設定ファイルは全ユーザに適用され、ホームディレクトリ以下の設定ファイル
は、ユーザごとに適用されます。以上から、全てのユーザで共通に使用する環境変数を設定するためには
/etc/profileに設定します。ユーザ別の環境変数を設定する場合は~/.bash_profileファイルに設定します。
システムにログインする場合の設定ファイルの実行順序は以下の通りです。
※ bashコマンドを実行してbashを起動した場合に最初に実行される設定ファイルは ~/.bashrc ファイル。
◆ ~/.bash_profileファイルの詳細
~/.bash_profileファイルの ~ はユーザーのホームディレクトリを表しておりユーザー独自の設定をします。
◆ ~/.bashrcファイルの詳細