我有单独的 bash 任务脚本。这是破损的:
#!/bin/bash
PATH=/home/name/
mkdir $PATH
cd $PATH && echo "done."
exit 0
今天它坏了,第一次它只是不想运行 cd,而是创建了目录。第二次它只是说“找不到 mkdir 命令”。完全使用分号运行此命令效果很好。到底是怎么回事?
答案1
PATH
是一个环境变量。您的 shell 使用它来查找它将要运行的命令。更准确地说,PATH
环境变量包含以冒号分隔的目录名称列表,系统会按顺序在这些目录名称中搜索具有您在键入命令时指定的名称的可执行文件。 (当然,除非您键入的命令是 shell 内置命令、别名或函数。)
当您在脚本中设置时,PATH
您正在使用同名的 shell 变量“屏蔽”环境变量的值。
由此得出的结论是不要对常规 shell 变量使用全部大写名称。
由于您不需要环境变量,因此只需使用小写变量名称。
另请参阅:
答案2
在 bash 中,PATH
是一个特殊变量,用于指示bash
在何处查找已安装的程序。除非您有mkdir
二进制文件/home/name/
,否则它应该在设置mkdir: command not found
后输出。PATH
使用不同的变量名称来解决此问题。