web-dev-qa-db-ja.com

mkdirコマンドがbashスクリプトに見つかりません

この単純なスクリプトの実行中にエラーが発生する理由がわかりません。

#!/bin/bash

read -p "Please enter directory name: " DIR
read -p "Please enter the path: " PATH
mkdir -p "$PATH/$DIR"
line 7: mkdir: command not found
15
MLSC

変数PATHは使用しないでください。この変数には、実行可能プログラムを検索するためのディレクトリのリストが含まれています。置き換えているため、スクリプトはmkdirプログラムを見つけることができません。

一般に、すべて大文字の変数は使用しないでください。これらは、シェルまたは他のプログラムのパラメーターとしてよく使用されます。

39
Barmar

変数PATHは重要な環境変数です。これは、プログラム(mkdirなど)が見つかり、上書きする方法です。あなたはそれをすべきではありませんが、そうする必要がある場合は:

/bin/mkdir -p "$PATH/$DIR"

ただし、正直に大文字は使用しないでください。 Bashにはたくさんの予約済み変数または特殊変数があり、それらをすべて思い出せない場合は、1つを除いてすべて大文字であることに注意してください。 Bashの変数は、すべての賢明なプログラミング言語と同様に、大文字と小文字を区別します。

5
cdarke