脚本中间写着sudo -s,不退出继续执行
时间: 2024-04-15 15:27:38 浏览: 22
在脚本中使用`sudo -s`命令可以切换到超级用户(root)身份并打开一个新的shell。如果您希望在切换到超级用户后继续执行脚本中的命令,可以使用以下方法:
```bash
#!/bin/bash
# 切换到超级用户
sudo -s <<EOF
# 在超级用户模式下执行的命令
echo "这是在超级用户模式下执行的命令"
# 切换回普通用户
exit
EOF
# 继续执行的命令
echo "这是继续执行的命令"
```
在上面的示例中,`sudo -s <<EOF`将切换到超级用户模式,并将`EOF`作为结束符。在`EOF`和`EOF`之间的部分是在超级用户模式下执行的命令。然后,使用`exit`命令切换回普通用户,并继续执行脚本中的其他命令。
请注意,使用`sudo -s`切换到超级用户模式时需要输入密码。如果您希望在脚本中自动输入密码,可以考虑使用`sudo -S`命令结合输入重定向。但是请注意,自动输入密码可能不安全,请谨慎使用。
相关问题
自动化,sudo -s后,接着执行指令
如果你想在使用 `sudo -s` 命令获取root权限后继续执行其他指令,你可以将这些指令放在一个脚本文件中,并在 `sudo -s` 命令后使用 `source` 或 `.` 命令来运行该脚本。下面是一个示例:
```bash
#!/bin/bash
# 你的指令
echo "这是需要root权限的指令"
# 脚本执行完毕后,退出root权限
exit
```
然后,你可以将以上脚本保存为 `script.sh` 文件,并在终端中运行以下命令:
```bash
sudo -s
source script.sh
```
在这个示例中,`sudo -s` 命令将会获取root权限,然后通过 `source script.sh` 命令运行 `script.sh` 脚本,其中包含了需要在root权限下执行的指令。脚本执行完毕后,会自动退出root权限。
请注意,在使用 `sudo -s` 命令获取root权限后,你需要手动输入密码。如果想要避免手动输入密码,可以考虑配置sudoers文件以允许特定用户或命令在不输入密码的情况下获取root权限。
希望这个示例对你有所帮助!如果你还有其他问题,请随时提问。
描述sudo -s和sudo -i的区别
sudo -s和sudo -i都是用于以超级用户身份运行命令的sudo命令的选项。它们之间的区别如下:
1. sudo -s:该选项允许用户以超级用户(root)的身份启动一个新的shell。这个新的shell会继承当前用户的环境变量,并且用户可以在这个shell中执行需要超级用户权限的命令。但是,sudo -s并不会改变当前用户的工作目录。
2. sudo -i:该选项也允许用户以超级用户身份启动一个新的shell,但是与sudo -s不同的是,sudo -i会将当前用户的环境变量完全替换为超级用户的环境变量,并且会将当前用户的工作目录切换到超级用户的主目录(即root用户的主目录)。
总结一下:
- sudo -s启动一个新的shell,继承当前用户的环境变量,但不改变工作目录。
- sudo -i启动一个新的shell,完全替换当前用户的环境变量,并切换到超级用户的主目录。