このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習34

新Linuxコマンド演習34 概要

新Linuxコマンド演習34」では、シェルスクリプトの実行方法について学びます。
 本演習では、同じシェルスクリプトを bashコマンド, sourceコマンド, 絶対パス, 相対パス など、複数の方法で実行する練習を行います。

シェルスクリプトの実行方法は複数あり、それぞれの動作の違いを理解することで、
権限設定(実行権xの有無)やPATH変数の仕組みも自然と身につきます。

 この演習を通して、bash・source・./実行 の違いを体感し、スクリプト実行の基礎を確実に理解しましょう。

学習する主なコマンド

コマンド主な用途特徴
bash新しいbashプロセスを起動し、スクリプトを実行する。実行権がなくてもスクリプト実行可
source現在のシェル上でスクリプトを読み込んで実行する。シェル変数が引き継がれる。
chmodファイルの権限を変更する。実行権( x )の付与などに使用
printenv環境変数の内容を表示する。PATH変数の確認に便利

表の説明
この表では、演習で扱う主要コマンドの用途と特徴をまとめています。
特にbashとsourceの違いはシステム管理で重要であり、後続の演習(演習35)にもつながります。

演習問題+模範解答例

演習01:日時・ディスク・メモリ情報をログに保存する

問題
現在の日時・ディスク使用量・メモリ使用量を system.log に保存してください。

模範解答例

[suzuki@AlmaLinux ~]$ date > system.log
[suzuki@AlmaLinux ~]$ df -H >> system.log 
[suzuki@AlmaLinux ~]$ free -m >> system.log 
[suzuki@AlmaLinux ~]$ cat system.log 
2025年 11月 19日 水曜日 22:23:39 JST
ファイルシス                    サイズ  使用  残り 使用% マウント位置
devtmpfs                          4.2M     0  4.2M    0% /dev
tmpfs                             929M     0  929M    0% /dev/shm
tmpfs                             372M   16M  357M    5% /run
/dev/mapper/almalinux_vbox-root    19G  9.2G  9.1G   51% /
/dev/sda1                         1.1G  629M  379M   63% /boot
tmpfs                             186M  123k  186M    1% /run/user/1000
/dev/sr0                           62M   62M     0  100% /run/media/suzuki/VBox_GAs_7.1.10
               total        used        free      shared  buff/cache   available
Mem:            1771         806         156           3         971         964
Swap:           2047        1091         956

解説

  • > は上書きリダイレクト、>> は追記リダイレクトです。
  • date, df, free の出力結果を1つのファイルにまとめています。
  • df -H はディスク容量を人間に読みやすい単位(GBやMB)で表示します。

演習02:シェルスクリプトを作成する

問題
ディスクとメモリの情報を記録するシェルスクリプト disk-memory.sh を作成してください。

模範解答例

[suzuki@AlmaLinux ~]$ nano disk-memory.sh

以下の内容を入力して保存します。

#!/bin/bash
date >> system.log
df -H >> system.log
free -m >> system.log

解説

  • #!/bin/bash はシェルスクリプトの実行シェルを指定します。
  • >> によりログを追記していく構成にしています。
  • スクリプト内のコマンドをまとめて実行することで、定期的なシステム情報収集にも応用できます。

演習03:bashコマンドで実行する(実行権なし)

問題
disk-memory.sh の実行権がなくても、bashコマンドでスクリプトを実行してみてください。

模範解答例

[suzuki@AlmaLinux ~]$ ls -l disk-memory.sh
-rw-r--r--. 1 suzuki suzuki 73 11月 19 22:27 disk-memory.sh
[suzuki@AlmaLinux ~]$ bash disk-memory.sh

解説

  • bash ファイル名 形式では、スクリプトの実行権がなくても実行可能です。
  • これは「bashコマンドがファイルを読み込んで実行」しているためです。
  • /bin/bash の実行権を確認すると以下のようになります。
[suzuki@AlmaLinux ~]$ ls -l /bin/bash
-rwxr-xr-x. 1 root root 1389024  4月 30  2024 /bin/bash

演習04:sourceコマンドで実行する

問題
source コマンドを使ってスクリプトを実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ source disk-memory.sh

解説

  • source コマンドは現在のシェル環境上でスクリプトを読み込みます。
  • bash との違いは、「新しいシェルを起動せず、現在のシェルで実行する」点です。
  • 実行権がなくても実行できます。

演習05:絶対パスでスクリプトを実行する(失敗例)

問題
実行権を与えずに、絶対パスを指定してスクリプトを実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ /home/suzuki/disk-memory.sh
bash: /home/suzuki/disk-memory.sh: 許可がありません

解説

  • ファイルに実行権( x )がないため、「許可がありません」と表示されます。
  • 絶対パスでの実行は「ファイルそのものを実行」しようとする動作になるため、実行権が必要です。

演習06:実行権を付与する

問題
disk-memory.sh に実行権を与えてください。

模範解答例

[suzuki@AlmaLinux ~]$ chmod a+x disk-memory.sh
[suzuki@AlmaLinux ~]$ ls -l disk-memory.sh
-rwxr-xr-x. 1 suzuki suzuki 73 11月 19 22:27 disk-memory.sh

解説

  • chmod a+x で全ユーザーに実行権を付与します。
  • x 権限が付与されることで、直接実行できるようになります。

演習07:絶対パスで再実行する(成功例)

問題
実行権を付与した状態で、絶対パスを指定してスクリプトを実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ /home/suzuki/disk-memory.sh

解説
実行権を持つスクリプトは、絶対パスまたは相対パスで直接実行できます。

演習08:相対パスで実行する(失敗例)

問題
disk-memory.sh のみを入力して実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ disk-memory.sh
bash: disk-memory.sh: コマンドが見つかりませんでした...

解説

  • カレントディレクトリ( . )の /home/suzuki がPATHに含まれていないため、スクリプトを見つけられません。
  • 確認のためにPATH変数を表示します。
[suzuki@AlmaLinux ~]$ printenv PATH
/home/suzuki/.local/bin:/home/suzuki/bin:/usr/local/bin:
/usr/local/sbin:/usr/bin:/usr/sbin

演習09:相対パスで実行する(成功例)

問題
./disk-memory.sh の形式でスクリプトを実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ ./disk-memory.sh

解説

  • ./ は「カレントディレクトリ」を表します。
  • PATHに含まれていない場所のスクリプトを実行する際には、この形式を使います。

演習終了時の作業

問題
演習で作成したファイルを削除してください。

模範解答例

[suzuki@AlmaLinux ~]$ rm disk-memory.sh system.log
[suzuki@AlmaLinux ~]$ ls
Desktop    Downloads  Pictures  Templates
Documents  Music      Public    Videos

まとめ

新Linuxコマンド演習34」では、

  • bash・source・./ の3通りのスクリプト実行方法
  • 実行権( x )の有無による動作の違い。
  • PATH環境変数の役割

を学びました。

 これらの理解は、次の「新Linuxコマンド演習35」で扱う「bashとsourceの動作の違い(サブシェルと現在のシェル)」につながります。