if-else 语句中未找到命令

if-else 语句中未找到命令

我有一些函数,可以 chroot 到某个目录。我使用execif 语句类型执行此命令两次if-else。第一次我在then部分中执行命令,第二次 —else使用其他一些参数。虽然if返回true— 一切都很好,但如果它返回false,我会收到这样的错误chroot not found。我的代码部分:

define manage_users($some_variables)
{
    some code here ...

    if $action == "create" {
        $command = "..."
        exec {"${nsenter} && chroot ${some_dir} /bin/bash -c '${some_command}'":
            path    => ["/usr/sbin", "/usr/bin", "/bin"],
        }
    } #delete user
    else {
        some code ....

        exec { "${nsenter} && chroot ${some_dir} /bin/bash -c '${some_other_command}'":
            path    => ["usr/sbin", "/usr/bin", "/bin"],
            onlyif  => "...",
        }
    }
}

我在 中做错了什么else? 在我看来,它与 中的一样then

答案1

您的路径:

            path    => ["usr/sbin", "/usr/bin", "/bin"],

那应该是:

            path    => ["/usr/sbin", "/usr/bin", "/bin"],

/注意在 处添加的usr/sbin
这是有道理的,因为它是/usr/sbin/chroot

相关内容