このページで解説している内容は、以下の 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の動作の違い(サブシェルと現在のシェル)」につながります。
