🐧 Linux 総合学習プラットフォーム

変数代入で = の前後にスペースを入れて command not found が出る

症状(よく出るエラー)

NAME = value と打つと NAME: command not found、NAME =value なら同様に NAME が見つからないと言われる。NAME= value だと今度は value をコマンドとして実行しようとする。

原因

シェルの変数代入は NAME=value のように = を密着させた1語であることが文法上の条件になっている。スペースで区切ると、シェルは先頭の語をコマンド名、残りを引数として解釈するため、NAME というコマンドを探しに行って失敗する。NAME= value の形は「NAME を空にした環境で value コマンドを実行する」という別の正しい構文なので、エラーの出方が変わる。

直し方

NAME=value と = の前後を詰めて書き直すだけで解決する。値にスペースを含めたいときは NAME="hello world" のように引用符で囲む。設定できたかは echo "$NAME" で確認する。

▶ 学習アプリでしっかり学ぶ