首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确的使用方法

正确的使用方法
EN

Stack Overflow用户
提问于 2015-05-27 16:44:54
回答 1查看 33关注 0票数 1

执行以下脚本会给mkdir命令带来错误

代码语言:javascript
复制
PATH=/root
while getopts "r" name;
do
    case $name in
        r)
            PATH=/home
            ;;
        *)
            echo "Usage: $0 -r"
            ;;
    esac
done

echo $PATH
mkdir new

错误:

代码语言:javascript
复制
./test.sh: line 15: mkdir: command not found

这个剧本怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 17:25:50

您的问题与getopts没有任何关系。

问题是第一行:

代码语言:javascript
复制
PATH=/root

或者,如果它被执行,这一行:

代码语言:javascript
复制
PATH=/home

这将命令的搜索路径仅设置为/root/home目录。(通常,这些目录都不包含任何命令)。

设置$PATH会抛出前一个值。mkdir可能在/bin中,但是由于/bin不再在$PATH中,所以shell无法找到它。

getopts命令没有出现错误,因为它是内置在正在使用的shell中的。

如果要将/root添加到$PATH中,请使用:

代码语言:javascript
复制
PATH="/root:$PATH"

代码语言:javascript
复制
PATH="$PATH:/root"

但是,脚本中的任何内容似乎都不依赖于/root在您的$PATH中。你为什么一开始就做PATH=/root呢?如果试图将当前工作目录设置为/root/home,则需要chdir命令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30488516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档