Linux – シェル環境のカスタマイズと使用

最近更新

 Linuxではシェルにbashを標準で利用することができるのですが、以下でそのbashを詳細に解説します。

◆ bash – エイリアス機能

bashシェルではエイリアスを利用することでコマンドの別名を定義したり、コマンドとそのオプションを
まとめて1つの新しいコマンドとして実行できます。エイリアス機能を使用するためにaliasコマンドを使用。

 ◆ 構文 : alias 別名=’ コマンド ‘

 ◆ 実行例 : lla と入力するだけで、ls -la という「コマンド + オプション」を実行できるように設定

 alias lla=’ls -la’


◆ 実行例 : lla の入力だけで、ls -la が実行できていることの確認


lla

total 16
drwxr-xr-x. 2 admin admin 4096 Aug 1 05:17 .
drwx——. 27 admin admin 4096 Aug 1 05:18 ..
-rw-rw-r–. 2 admin admin 7 Jul 1 07:23 abc.lnk
-rw-rw-r–. 2 admin admin 7 Jul 1 07:23 abc.txt
-rw-rw-r–. 1 admin admin 160 Jul 1 07:23 abc.txt~

 エイリアスの設定を削除するためには、unaliasコマンドを使用します。

 ◆ 構文 : unalias 別名

 ◆ 実行例 : 定義したエイリアス「 lla 」の解除

 unalias lla

 

◆ bash – シェル関数

bashシェル上で利用できる独自の関数を定義するためには、functionコマンドを使用します。

 ◆ 構文 : function シェル関数名( ) { コマンド; }

 ◆ 実行例 : 「lsmo」という名前のシェル関数を定義して、ls -la | more コマンドが実行されるように設定

 function lsmo() { ls -la | more; }

 ◆ 実行例 : 関数の「 lsmo 」を実行すると、作成したコマンドが実行される


lsmo
total 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ファイルの詳細