LinuCレベル1 102試験の例題と解説

1.06.2シェルスクリプト

今回は102試験の試験範囲から、「1.06.2 シェルスクリプト」についての例題を解いてみます。

Linucレベル1 102試験 出題範囲


例題

シェルスクリプト「testscript」を、以下のように実行する場合に不要な手順を選択してください。

[条件]
* スクリプトはどのユーザでも、必ず/bin/bashで実行する
* 実行方法は以下とする($は一般ユーザーのプロンプト)

[実行方法]
$ testscript

  1. スクリプトの先頭行に「#!/bin/bash」を記載する
  2. スクリプトファイルに実行権を与える
  3. スクリプトのファイル名の拡張子を「.bash」に変更する
  4. スクリプトを環境変数$PATHに設定されているパスに配置する

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「3. スクリプトのファイル名の拡張子を「.bash」に変更する」です。

ファイル名は、シェルスクリプトの実行方法には影響を与えません。

自作のシェルスクリプトは、以下のようにシェルのコマンドを使って実行することができます。

実行例1) $ bash testscript
実行例2) $ bash ./testscirpt
実行例3) $ bash /home/user/testscirpt

ただ、この状態では、スクリプトを実行する場合にbashコマンドを使う必要があります。またカレントディレクトリにファイルが存在しない場合は、パスを指定する必要もあります。
つまり、通常のコマンド実行に比べて不便です。

通常のコマンドの実行方法、つまり例題の実行方法と同じようにスクリプトを実行するためには、以下の手順が必要になります。

a)スクリプトの先頭行に「#!/bin/bash」を記載する

「#!」から始まる行は、シバンやシェバン(she-bang)と呼ばれる行です。この行にはスクリプトを実行するコマンドを指定します。
以下の例では、/bin/bashを指定しています。

----------------------------------------------------------------
#!/bin/bash

echo "Hello World!"
exit $?
----------------------------------------------------------------

シバンを設定しない場合、多くの場合ログインシェルである/bin/bashを使ってスクリプトが実行されます。しかし環境によって実行シェルが変わります。
今回はスクリプトをどのユーザで実行しても /bin/bash で実行するため、シバンに/bin/bashを記載しています。

なおシバンに/bin/shを指定する場合はシステムによっては、/bin/sh以外のシェルで実行されることがあるため注意が必要です。

b)ファイルに実行権を与える
次にファイルに実行権が必要になります。以下は実行権を与える例です。

例:

$ chmod a+x ./testscript

 
c) プログラムを環境変数$PATHに設定されているパスに配置する
最後に、環境変数$PATHにプログラムが配置されているパスを追加します。
以下の例は、環境変数$PATHに/usr/local/binが含まれている環境を想定しています。

例:
※ $PATHに含まれるパスの確認

$ echo $PATH
/usr/local/bin:/usr/bin

※ スクリプトの移動(この操作にはroot権限が必要です。#はrootユーザーのプロンプト)

# mv ./testscript /usr/local/bin

これらの手順を実施すると、通常のコマンドと同じようにスクリプトを実行できるようになります。

自分で作成したシェルスクリプトは、何度も使うこともあります。使う機会の多いものは、いつでも使えるように適切に設定しておくと便利です。


例題作成者

株式会社デージーネット ソリューション開発部    森 彰吾 氏

ページトップへ