将用户添加到组时无提示失败

将用户添加到组时无提示失败

作为环境设置脚本的一部分,我们有以下安装 docker 的代码片段:

if [ ! "$(docker -v)" ]; then
    infoMessage "Setting up Docker..."

    echo "Updating system packages.."
    sudo apt-get update

    echo "Installing dependencies..."
    sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

    echo "Adding GPG key..."
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    echo "Adding docker repository..."
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

    apt-cache policy docker-ce
    echo "Installing docker engine..."
    sudo apt-get -y install docker.ce

    sudo usermod -aG docker ${USER}
    newgrp docker
fi

然而,对于我们的两个开发人员来说,由于某种原因,脚本在安装 docker 之后和之前fi(用 's 发现echo)就默默退出了。usermod或者命令newgrp。退出代码为零,我完全困惑为什么这种情况只发生在他们的机器上,除了他们所做的任何个人配置和更改之外,这些机器在功能上应该与其他机器相同。当他们单独运行命令时,根本没有任何问题,然后他们可以重新运行脚本来完成设置。

我检查了断线字符,它们是 LF (\n) 与脚本中其他地方相同。他们运行的是 Ubuntu 18.04。

答案1

原因是newgrp本质上只是创建一个新的 bash 实例,因此在它退出(从未发生)之前它无法继续执行脚本。本质上与su - $(id -u -n);您的脚本中的相同

相关内容