我尝试一个接一个地运行一些命令,但我认为我犯了一些错误,因为只运行了第一个命令。我有一个如下的 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。