Q1シェルスクリプトの1行目に書く#!/bin/shは何を指定しますか?
シェルスクリプト入門 — #!/bin/sh と chmod +x
この記事は、基礎コマンドからシェルスクリプトまでLinuxの実践的なスキルを1からマスターする「Linux入門講座の一部」です。
viエディタでスクリプトファイルを作り、1行目に #!/bin/sh とコメントを置き、chmod +x で実行権限を付けて ./hello.sh で動かす流れを、図解とブラウザ端末で実習します。
スクリプトを作る — vi と #!/bin/sh
シェルスクリプトは、ふだん端末に打つコマンドをファイルにまとめて1回で実行できるようにしたものです。
決まった手順を毎回手で打つ代わりにファイルへ書いておけば、同じ作業を何度でも正確に繰り返せます。
ここでは基本的なシェルスクリプトの作成と実行方法を学びます。
vi hello.shでファイルを開き、iで挿入モードに入って本文を打ち、Escを押してから:wqで保存して閉じます(viの基本操作は前回学んだとおりです)。
1行目は#!/bin/shというシェバンにし、どのシェルで実行するかを指定します。
#で始まる行はコメントとして実行時に無視されます。
ただし1行目の#!/...だけは#で始まってもコメントではなく、どのシェルで動かすかの指定として特別に解釈されます。
vi hello.shで作ると-rw-r--r--(x なし)、chmod +xで-rwxr-xr-x(x あり)に変わり、./hello.shで実行できます。中央はls -lで確認する流れです。| 書き方 | 意味 | 例 |
|---|---|---|
vi f | エディタでファイルを開く(無ければ新規作成) | vi hello.sh |
i … Esc | 挿入モードで本文を書き、Esc でノーマルへ戻る | i を押す … Esc |
:wq | 保存して vi を終了する | :wq |
#!/bin/sh | 1行目に置くシェバン(実行するシェルの指定) | #!/bin/sh |
# コメント | 実行時に無視される説明行 | # create backup |
chmod +x f | ファイルに実行権限を付ける | chmod +x hello.sh |
./f | カレントのスクリプトを実行する | ./hello.sh |
>> f | ファイル末尾に追記(上書きしない) | date >> run.log |
vi note.sh # エディタでスクリプトを開く
# i で挿入モードに入り、次の内容を書く:
# #!/bin/sh
# # show a short message
# echo "build step 1"
# echo "build step 2"
# Esc を押し :wq で保存して終了
chmod +x note.sh # 実行権限を付ける
./note.sh # build step 1 / build step 2 と表示される
実行する — chmod +x と ./
作っただけのファイルはそのままでは実行できません。
chmod +x fileで実行権限を付けると、./fileの形で動かせるようになります。
./はカレントディレクトリにあるファイルを指す書き方で、これを付けないとシェルはコマンドをPATHの中だけから探してしまい見つかりません。
vi greet.sh # エディタで開き #!/bin/sh と echo hi を書いて :wq で保存
ls -l greet.sh # 実行権限はまだ無い
chmod +x greet.sh # 実行権限を付ける
ls -l greet.sh # 左端に x が出る
./greet.sh # hi と表示される
実行権限なしで動かす方法もある
実行権限を付けずに動かしたいときは、sh fileのようにシェルにファイルを渡す方法もあります。
本講座では実行権限を付けて./fileで動かす基本形を使います。
実行権限が付いたかはls -lの左端にxが出ているかで確認できます。
実行を記録する小ツールを作る
学んだ作成・権限付与・実行の流れは、そのまま実務の小さなツールに使えます。
ここでは「いつスクリプトを動かしたか」を1つのログファイルに追記していく記録ツールを作ります。
>>で追記すると、実行のたびに行が積み上がり、後から実行履歴を振り返れます。
date >> run.logの追記とcat run.logの表示が起こり、繰り返すたびにrun.logの行が積み上がります。理解度チェック
まずは1問ずつ答えてみましょう。
Q2作成したスクリプトに実行権限を付けるコマンドはどれですか?
Q3カレントディレクトリにあるhello.shを実行する書き方はどれですか?