新Linux入門|シングルクォートとダブルクォートの違いと使い分け

Linuxのコマンドラインでは、文字列を扱うときによく登場するのが
シングルクォート(')ダブルクォート(") です。

一見、どちらも「文字列を囲むための記号」に見えますが、
実はシェルの動作に大きな違いをもたらします。

この記事では、両者の違いと正しい使い分けを実際のコマンド例を交えて解説します。

✨ 引用符(クォート)とは?

引用符(クォート)とは、シェルが文字列をどのように解釈するかを指定するための記号です。
Linuxのシェルでは、空白(スペース)や $* などの文字が特別な意味を持つため、
それらを「そのままの文字」として扱いたいときに、クォートで囲みます。

クォートの種類記号主な特徴
シングルクォート' 文字列 '中の文字を完全に「文字列」として扱う(変数展開なし)
ダブルクォート" 文字列 "変数展開・コマンド置換が有効になる
バックスラッシュ\特定の1文字だけをエスケープ(特別な意味を無効化)

💬 ポイント
Linuxのシェルでは、「何を文字列として扱うか」を明確にしないと、思わぬエラーを引き起こすことがあります。
特にエイリアスや変数を扱うときには、クォートの違いを理解しておくことが大切です。

🧩 aliasコマンドの失敗例(クォートを使わない場合)

alias(エイリアス)コマンド は、よく使うコマンドに別名をつけるためのコマンドです。
しかし、値にスペースが含まれている場合、クォートをつけ忘れるとエラーになります。

📘 例

[suzuki@AlmaLinux ~]$ alias myalias=ls -l
bash: alias: -l: 見つかりません

💬 この場合、bash は「myalias=ls」を1つの命令として解釈し、
「-l」は別の引数とみなしてしまうため、エラーになります。

✅ 正しいaliasの定義(クォートあり)

値をクォートで囲むことで、スペースを含む部分を1つの文字列として認識させることができます。

📘 正しい例

[suzuki@AlmaLinux ~]$ alias myalias='ls -l'
[suzuki@AlmaLinux ~]$ myalias
total 8
drwxr-xr-x 2 suzuki suzuki 4096 Oct 28 Documents
drwxr-xr-x 2 suzuki suzuki 4096 Oct 28 Downloads

💬 'ls -l' とシングルクォートで囲んだことで、
「ls」と「-l」が1つのコマンドとして扱われ、正しく動作します。

🪄 バックスラッシュでのエスケープ

 シングルクォートやダブルクォートを使わずに、バックスラッシュ(\) でエスケープすることもできます。

📘 例

[suzuki@AlmaLinux ~]$ alias myalias=ls\ -l
[suzuki@AlmaLinux ~]$ myalias

💬 この場合、\ により「スペース」が文字列の一部として扱われます。
クォートを使わずに1文字だけをエスケープしたいときに便利です。

⚙️ シングルクォートの特徴

シングルクォート ' ' で囲まれた文字列は、中身がすべてそのまま扱われます。
つまり、変数展開やコマンド置換は行われません。

📘 例

[suzuki@AlmaLinux ~]$ name=tanaka
[suzuki@AlmaLinux ~]$ echo 'My name is $name.'
My name is $name.

💬 $name は展開されず、文字列としてそのまま出力されます。
そのため、完全に固定した文字列を扱いたいときに使います。

⚙️ ダブルクォートの特徴

ダブルクォート " " で囲むと、変数展開やコマンド置換が有効になります。

📘 例

[suzuki@AlmaLinux ~]$ name=tanaka
[suzuki@AlmaLinux ~]$ echo "My name is $name."
My name is tanaka.

💬 このように、$name が実際の値(tanaka)に置き換えられています。
ダブルクォートは、動的な文字列を扱うときに非常に便利です。

🔍 シングルクォートとダブルクォートの違いまとめ

比較項目シングルクォート(')ダブルクォート(")
変数展開無効(そのまま出力)有効(値に置き換えられる)
コマンド置換無効有効
特殊文字(例:$、`、\)そのまま文字として扱う特定のものは解釈される
用途固定文字列の出力変数やコマンドを含む動的文字列の出力

💬 覚え方のコツ

  • ' '(シングル)は そのまま出す
  • " "(ダブル)は 中の式を評価する

🧾 実行結果比較例

コマンド出力結果説明
echo 'Today is $(date)'Today is $(date)コマンド置換されない(そのまま文字列)
echo "Today is $(date)"Today is Tue Oct 28 12:34:56 JST 2025コマンド置換される
echo 'PATH is $PATH'PATH is $PATH変数展開されない
echo "PATH is $PATH"PATH is /usr/local/bin:/usr/bin:/bin変数展開される

💬 この図では、シェルがどのように文字列を処理するかを視覚的に理解できます。

✅ まとめ

  • シングルクォート ' ':文字列をそのまま出力(変数展開なし)
  • ダブルクォート " ":変数やコマンドを展開して出力
  • エイリアスや変数を定義するときは、内容にスペースがある場合は必ずクォートで囲む

💬 ポイント

  • 固定文を出したいとき → ' '
  • 動的な値を出したいとき → " "
  • クォートを正しく使うことで、思わぬエラーや誤動作を防げます。

Linuxを使いこなす第一歩として、
「シングルクォートとダブルクォートの違い」 をしっかりマスターしておきましょう。