作为环境设置脚本的一部分,我们具有以下代码片段,用于安装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
(通过找到echo
s)之前静默退出。任一usermod
或newgrp
命令。退出代码为零,我对此完全感到困惑,为什么除了在他们的任何个人配置和所做的更改之外,仅在功能上与其他机器相同的他们的机器上始终会发生这种情况。当他们分别运行命令时,根本没有问题,然后可以重新运行脚本以完成设置。
我检查了换行符,它们是LF(\ n),与脚本中的其他所有字符相同。他们正在运行Ubuntu 18.04。
原因是newgrp
实质上只是创建一个新的bash实例,结果直到它退出(从未发生),它才无法继续执行该脚本。本质上与su - $(id -u -n);
脚本中的相同
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句