如果我正在编写一个以 sudo 身份运行的 bash 脚本,如何确保我留在用户 shell 中?

如果我正在编写一个以 sudo 身份运行的 bash 脚本,如何确保我留在用户 shell 中?

我正在编写一个 bash 脚本来处理存储库的安装,主要是检查一些基本依赖项并经常调用 git clone。

运行此脚本时,我想检查文件是否已安装。

git clone https://github.com/reticulatedpines/magiclantern_simplified.git 
echo "Exit status: ($?)" 
if [ $? -eq 0 ]; then
    echo "Magic Lantern has been cloned into ${ML_PATH}."
else
    exit 1
fi

问题是存储库将克隆到当前工作目录中,这不是我想要的,如果我尝试cd ~返回主目录,它实际上会将我发送到根 shell:

root@debian:~# (repository installs here).

我怎样才能避免这种情况?

答案1

sudo -E <cmd>

使用 -E 运行 sudo “运行命令时保留用户环境”

保留用户环境将在当前位置运行命令。

相关内容