本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第1回 シェルスクリプトとは何か:zshでの基本と実行方法を学ぶ | macOS

はじめに
この連載では、macOS のターミナルで zsh を使いながら、シェルスクリプトの基本を順番に学んでいきます。
普段、私たちはマウスを使って画面上のアイコンをクリックし、直感的にコンピュータを操作しています。しかし、エンジニアの世界では「ターミナル」という黒い画面を使い、文字で命令を与えるスタイルが今も主流です。なぜなら、その方が圧倒的に正確で、そして「自動化」しやすいからです。
第1回では、まず「シェル」と「シェルスクリプト」がそれぞれ何を指しているのか、その正体を整理します。一見難しそうに見える呪文のようなコマンドも、その仕組みを知れば驚くほど論理的であることに気づくはずです。
手動で行っていた面倒な作業を、たった一行のコマンドや、一つのファイルに任せてしまう。そんな「シェルスクリプトという魔法」の第一歩を、ここから一緒に踏み出してみましょう。
この回で学ぶこと
- シェルとシェルスクリプトの違い
- macOS では zsh が標準で使われていること
echo "Hello"をターミナルで実行する方法#!/bin/zshを付けたスクリプトの作り方chmod +xで実行権限を付ける意味./hello.zshとzsh hello.zshの違い
シェルとシェルスクリプトの違い
シェルとは何か
シェルは、入力したコマンドを受け取り、OS に処理を依頼するプログラムです。
ターミナルで次のようなコマンドを入力すると、その内容を解釈して実行するのがシェルです。
pwd
ls
echo "Hello"macOS では、現在は zsh が標準のシェルとして使われています。
シェルスクリプトとは何か
シェルスクリプトは、シェルに実行させるコマンドをファイルにまとめたものです。
ターミナルで1行ずつ入力していた内容を、ファイルとして保存して再利用できるようにしたものがシェルスクリプトです。
たとえば、次の1行をファイルに保存したものもシェルスクリプトです。
echo "Hello"macOS では zsh が標準
macOS では、zsh が標準のシェルとして使われています。初学者向けの学習では、まず zsh を前提に進めるのが分かりやすいです。
この連載でも、macOS のターミナルで zsh を使う前提で説明します。
スクリプトの先頭に書く #!/bin/zsh は、「このファイルを zsh で実行する」という指定です。
ターミナルで echo “Hello” を実行する
まずは、ターミナルで直接コマンドを実行してみます。
echo "Hello"実行結果は次のようになります。
Helloecho は、指定した文字列をそのまま表示するコマンドです。
ここではまだファイルを使っていません。ターミナルでシェルに直接命令している状態です。
サンプルコード
次に、同じ内容をシェルスクリプトとして保存します。ファイル名は hello.zsh にします。
#!/bin/zsh
echo "Hello"実行手順
1. ファイルを作成する
エディタで hello.zsh という名前のファイルを作成し、次の内容を保存します。
#!/bin/zsh
echo "Hello"2. 実行権限を付ける
次のコマンドを実行します。
chmod +x hello.zshこのコマンドは、hello.zsh を実行できるようにするためのものです。
3. スクリプトを実行する
次のコマンドで実行します。
./hello.zsh実行結果は次のようになります。
Helloコードの読み方
#!/bin/zsh
1行目の #!/bin/zsh はシバンと呼ばれます。
この行は、このスクリプトを zsh で実行することを示します。
./hello.zsh のようにファイルを直接実行するときは、この指定が重要です。
echo “Hello”
2行目の echo "Hello" は、文字列 Hello を画面に表示する処理です。
ターミナルで直接実行したときと、スクリプト内で実行したときで、処理の内容自体は同じです。
./hello.zsh と zsh hello.zsh の違い
どちらも hello.zsh を実行できますが、動き方は同じではありません。
./hello.zsh
./hello.zshこの方法は、hello.zsh というファイル自体を直接実行します。
そのため、次の2つが必要です。
- ファイルに実行権限があること
- 先頭に
#!/bin/zshのような実行シェルの指定があること
zsh hello.zsh
zsh hello.zshこの方法は、zsh コマンドに hello.zsh を読み込ませて実行します。
こちらは zsh を明示的に起動しているため、通常はシバンがなくても動きます。また、直接実行ではないので、実行権限がなくても読み取り可能であれば実行できます。
初学者がつまずきやすい点
ターミナルでの実行とファイル実行は別
echo "Hello" をターミナルで入力するのは、その場で1回実行しているだけです。
同じ内容をファイルに保存すると、何度でも同じ手順で実行できます。
./ を付け忘れる
カレントディレクトリにあるスクリプトを直接実行するときは、通常 ./hello.zsh のように ./ を付けます。
hello.zsh だけでは、コマンドとして見つからない場合があります。
chmod +x を忘れる
./hello.zsh で実行したいのに実行権限を付けていないと、エラーになります。
よくあるエラー
zsh: permission denied: ./hello.zsh
実行権限が付いていない可能性があります。
chmod +x hello.zshを実行してから、もう一度試してください。
command not found: hello.zsh
./ を付けずに実行している可能性があります。
./hello.zshのように実行します。
bad interpreter
1行目の #!/bin/zsh が正しく書かれていない可能性があります。
/bin/zsh というパスを正確に書いているか確認してください。
練習用コード
次の内容で greet.zsh を作成して実行してみてください。
#!/bin/zsh
echo "Good morning"
echo "This is my first shell script"実行権限を付けてから、次のように実行します。
chmod +x greet.zsh
./greet.zshこの回で理解しておくこと
- シェルはコマンドを解釈して実行するプログラムである
- シェルスクリプトは、そのコマンドをファイルにまとめたものである
- macOS では zsh を前提に学習を進めやすい
#!/bin/zshはスクリプトを zsh で実行する指定である./hello.zshでは実行権限とシバンが重要になるzsh hello.zshは zsh にファイルを渡して実行する方法である
まとめ
今回は、シェルとシェルスクリプトの違いを確認し、echo "Hello" を使ってターミナル実行とファイル実行の両方を試しました。
シェルスクリプトは、コマンドをファイルに保存して再実行できるようにするための基本的な仕組みです。
今後の回では、この形を土台にして、変数、引数、条件分岐、繰り返し処理へ進んでいきます。
次回予告
次回は「ターミナルとコマンドの基本を確認しよう」です。
pwd ls cd を使いながら、ファイルやディレクトリをどのように扱うかを整理します。



