第1回 シェルスクリプトとは何か:shでの基本と実行方法を学ぶ | はじめてのシェルスクリプト

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第1回 シェルスクリプトとは何か:zshでの基本と実行方法を学ぶ | macOS

はじめてのシェルスクリプト | 第1回

目次

はじめに

この連載では、macOS のターミナルで sh(シェル) を使いながら、シェルスクリプトの基本を順番に学んでいきます。

普段、私たちはマウスを使って画面上のアイコンをクリックし、直感的にコンピュータを操作しています。しかし、エンジニアの世界では「ターミナル」という黒い画面を使い、文字で命令を与えるスタイルが今も主流です。なぜなら、その方が圧倒的に正確で、そして「自動化」しやすいからです。

第1回では、まず「シェル」と「シェルスクリプト」がそれぞれ何を指しているのか、その正体を整理します。一見難しそうに見える呪文のようなコマンドも、その仕組みを知れば驚くほど論理的であることに気づくはずです。

手動で行っていた面倒な作業を、たった一行のコマンドや、一つのファイルに任せてしまう。そんな「シェルスクリプトという魔法」の第一歩を、ここから一緒に踏み出してみましょう。

この回で学ぶこと

  • シェルとシェルスクリプトの違い
  • 汎用的な sh を学習に採用する理由
  • ターミナルで echo "Hello" を実行する方法
  • #!/bin/sh を付けたスクリプトの作り方
  • chmod +x で実行権限を付ける意味
  • ./hello.shsh hello.sh の違い

シェルとシェルスクリプトの違い

シェルとは何か

シェル(Shell)は、英語で「殻」を意味します。OSの中核である「カーネル」を包み込み、人間とコンピュータの橋渡しをするプログラムのことです。 あなたが入力したコマンドを受け取り、コンピュータに処理を依頼して、その結果を画面に返してくれます。

pwd
ls
echo "Hello"

macOS では、現在は zsh が標準のシェルとして使われています。

シェルスクリプトとは何か

シェルスクリプトは、シェルに実行させるコマンドをひとまとめにして、テキストファイルとして保存したものです。 ターミナルで1行ずつ手動で入力していた内容を、1つのファイルに書き出すことで、複雑な作業も一瞬で、かつ正確に再利用できるようになります。

echo "Hello"

汎用性の高い「sh」を採用する理由

macOS のターミナルを起動した際に動いているプログラム(ログインシェル)は、現在は zsh が標準です。しかし、この連載で作成するシェルスクリプトでは、一貫して sh を採用します。

どこへ行っても通用する「標準語」を身につける

なぜ、最新の zsh ではなく sh でスクリプトを書くのでしょうか。それは、sh が UNIX 系 OS(Linux、サーバー、クラウド環境など)において、最も共通で汎用的な「標準語」だからです。

  • 環境を選ばない: sh のルールに従って書かれたスクリプトは、Mac だけでなく、Web サーバーや Raspberry Pi など、ほぼすべての UNIX 環境でそのまま動作します。
  • 一生モノの基礎体力: シェルにはいくつかの方言がありますが、sh はそのすべての土台です。まず sh をマスターすることで、将来どんな環境でも通用する「エンジニアとしての基礎力」が身につきます。

ターミナルで echo “Hello” を実行する

まずは、ターミナルで直接コマンドを実行してみます。

echo "Hello"

実行結果は次のようになります。

Hello

echo は、指定した文字列をそのまま表示するコマンドです。

ここではまだファイルを使わず、シェルに直接命令している状態です。

サンプルコード

次に、同じ内容をシェルスクリプトとして保存します。ファイル名は hello.sh にします。

#!/bin/sh

echo "Hello"

実行手順

1. ファイルを作成する

エディタで hello.sh という名前のファイルを作成し、次の内容を保存します。

#!/bin/sh

echo "Hello"

2. 実行権限を付ける

次のコマンドを実行します。

chmod +x hello.sh

このコマンドは、hello.sh を実行できるようにするためのものです。

3. スクリプトを実行する

次のコマンドで実行します。

./hello.sh

実行結果は次のようになります。

Hello

コードの読み方

#!/bin/sh

1行目の #!/bin/sh はシバンと呼ばれます。

この行は、このスクリプトを sh で実行することを示します。

./hello.sh のようにファイルを直接実行するときは、この指定が重要です。

echo “Hello”

2行目の echo "Hello" は、文字列 Hello を画面に表示する処理です。

ターミナルで直接実行したときと、スクリプト内で実行したときで、処理の内容自体は同じです。

./hello.sh と sh hello.sh の違い

どちらも hello.sh を実行できますが、動き方は同じではありません。

./hello.sh

./hello.sh

この方法は、hello.sh というファイル自体を直接実行します。

そのため、次の2つが必要です。

  • ファイルに実行権限があること
  • 先頭に #!/bin/sh のような実行シェルの指定があること

sh hello.sh

sh hello.sh

この方法は、sh コマンドに hello.sh を読み込ませて実行します。

こちらは sh を明示的に起動しているため、通常はシバンがなくても動きます。また、直接実行ではないので、実行権限がなくても読み取り可能であれば実行できます。

初学者がつまずきやすい点

ターミナルでの実行とファイル実行は別

echo "Hello" をターミナルで入力するのは、その場で1回実行しているだけです。

同じ内容をファイルに保存すると、何度でも同じ手順で実行できます。

./ を付け忘れる

カレントディレクトリにあるスクリプトを直接実行するときは、通常 ./hello.sh のように ./ を付けます。

hello.sh だけでは、コマンドとして見つからない場合があります。

chmod +x を忘れる

./hello.sh で実行したいのに実行権限を付けていないと、エラーになります。

よくあるエラー

sh: permission denied: ./hello.sh

実行権限が付いていない可能性があります。

chmod +x hello.sh

を実行してから、もう一度試してください。

command not found: hello.sh

./ を付けずに実行している可能性があります。

./hello.sh

のように実行します。

bad interpreter

1行目の #!/bin/sh が正しく書かれていない可能性があります。

/bin/sh というパスを正確に書いているか確認してください。

練習用コード

次の内容で greet.sh を作成して実行してみてください。

#!/bin/sh

echo "Good morning"
echo "This is my first shell script"

実行権限を付けてから、次のように実行します。

chmod +x greet.sh
./greet.sh

この回で理解しておくこと

  • シェルはコマンドを解釈して実行するプログラムである
  • シェルスクリプトは、そのコマンドをファイルにまとめたものである
  • 汎用性の高い sh を採用し、サーバーやクラウドなど「どこでも通用する標準語」を学ぶ
  • #!/bin/sh はスクリプトを sh で実行する指定である
  • ./hello.sh では実行権限とシバンが重要になる
  • sh hello.sh は sh にファイルを渡して実行する方法である

まとめ

今回は、シェルとシェルスクリプトの違いを確認し、echo "Hello" を使ってターミナル実行とファイル実行の両方を試しました。

シェルスクリプトは、コマンドをファイルに保存して再実行できるようにするための基本的な仕組みです。

今後の回では、この形を土台にして、変数、引数、条件分岐、繰り返し処理へ進んでいきます。

次回予告

次回は「ターミナルとコマンドの基本を確認しよう」です。

pwd ls cd を使いながら、ファイルやディレクトリをどのように扱うかを整理します。

さらに学びたいあなたへ

用途ごとに選ぶ Linux のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次