执行以下脚本会给mkdir命令带来错误
PATH=/root
while getopts "r" name;
do
case $name in
r)
PATH=/home
;;
*)
echo "Usage: $0 -r"
;;
esac
done
echo $PATH
mkdir new错误:
./test.sh: line 15: mkdir: command not found这个剧本怎么了?
发布于 2015-05-27 17:25:50
您的问题与getopts没有任何关系。
问题是第一行:
PATH=/root或者,如果它被执行,这一行:
PATH=/home这将命令的搜索路径仅设置为/root或/home目录。(通常,这些目录都不包含任何命令)。
设置$PATH会抛出前一个值。mkdir可能在/bin中,但是由于/bin不再在$PATH中,所以shell无法找到它。
getopts命令没有出现错误,因为它是内置在正在使用的shell中的。
如果要将/root添加到$PATH中,请使用:
PATH="/root:$PATH"或
PATH="$PATH:/root"但是,脚本中的任何内容似乎都不依赖于/root在您的$PATH中。你为什么一开始就做PATH=/root呢?如果试图将当前工作目录设置为/root或/home,则需要chdir命令。
https://stackoverflow.com/questions/30488516
复制相似问题