在bash脚本中找不到mkdir命令

在bash脚本中找不到mkdir命令,bash,mkdir,Bash,Mkdir,我不知道为什么在运行此简单脚本时出错: #!/bin/bash read -p "Please enter directory name: " DIR read -p "Please enter the path: " PATH mkdir -p "$PATH/$DIR" 不要使用变量PATH。此变量包含用于搜索可执行程序的目录列表。由于要替换它,脚本无法再找到mkdir程序 一般来说,避免使用全大写的变量,这些变量通常用作shell或其他程序的参数。变量PATH是一个重要的环境变量-它是程

我不知道为什么在运行此简单脚本时出错:

#!/bin/bash

read -p "Please enter directory name: " DIR
read -p "Please enter the path: " PATH
mkdir -p "$PATH/$DIR"

不要使用变量
PATH
。此变量包含用于搜索可执行程序的目录列表。由于要替换它,脚本无法再找到
mkdir
程序


一般来说,避免使用全大写的变量,这些变量通常用作shell或其他程序的参数。

变量
PATH
是一个重要的环境变量-它是程序(如
mkdir
)的查找方式,您正在覆盖它。你不应该这样做,但如果你必须这样做:

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

但老实说,不要用大写!Bash中有大量的保留变量或特殊变量,如果您不能全部记住它们,那么只需记住除一个之外的所有变量都是大写的。Bash中的变量是区分大小写的,就像所有合理的编程语言一样

您正在修改
$PATH
!这正是您应该避免使用大写变量名的原因。不要使用
ALL\u CAPS
变量名。正是因为这个原因。它们是“保留”给shell使用的。你说“……除了一个以外所有的都是大写的。”哪一个?@rjmunro
PATH
必须是大写的,并且是一个特殊变量,所以它是
DIR
。也许我误解了。您说“bash中有大量的保留变量或特殊变量……除了一个以外,所有变量都是大写的”。哪一个bash保留/特殊变量不是大写?或者这不是你想说的吗?在Bash4中,现在有两个shell变量,它们是小写的
auto_resume
histchars
。有关shell使用的变量列表,请参见
manbash
,除这两个变量外,所有变量都是大写的。
/bin/mkdir -p "$PATH/$DIR"