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

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

System Note $ cat /proc/ai-disclosure

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

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

はじめに

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

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

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

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

この回で学ぶこと

  • シェルとシェルスクリプトの違い
  • macOS では zsh が標準で使われていること
  • echo "Hello" をターミナルで実行する方法
  • #!/bin/zsh を付けたスクリプトの作り方
  • chmod +x で実行権限を付ける意味
  • ./hello.zshzsh 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"

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

Hello

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

ここではまだファイルを使っていません。ターミナルでシェルに直接命令している状態です。

サンプルコード

次に、同じ内容をシェルスクリプトとして保存します。ファイル名は 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 を使いながら、ファイルやディレクトリをどのように扱うかを整理します。

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

この記事を書いた人

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

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

Created by UNIX Cafe

目次