从 bash 脚本中依次运行命令

从 bash 脚本中依次运行命令

我尝试一个接一个地运行一些命令,但我认为我犯了一些错误,因为只运行了第一个命令。我有一个如下的 bash 脚本:

#!/bin/bash

sudo su && mkdir ./my_folder

当我运行脚本时,只有 sudo 命令有效,但没有创建文件夹。如果这是一个微不足道的问题,请见谅。

答案1

sudo su是一条注释,它会以 root 用户身份生成一个新的 shell。这&&意味着 bash 会等到上一条注释成功完成后再执行下一条(mkdir命令)。

但是,由于sudo su调用,您仍然处于 root shell 中。当您输入 exit 时,您将退出 root shell,然后您将返回到常规用户 shell,并且 bash 将以您的用户身份而不是 root 身份执行 mkdir 调用。

如果您想以 root 身份执行单个命令,请尝试sudo mkdir ./my_folder。这样,您明确地告诉 sudo 以 root 身份运行此命令,而不是生成一个全新的 shell。

相关内容