次のスクリプトを作成しようとしています。
#!/bin/bash
sudo -s
something...
実行すると、新しいシェルが作成されますが、シェルの内部ではなく作成されたsomething
シェルを終了したときにのみ実行されます。sudo -s
助けが必要ですか?
ベストアンサー1
別の方法は、完全なbashコマンドを次に渡すことですsudo
。
#!/bin/bash
sudo bash -c 'command1; command2; command3;'
しかし、より良いアプローチは始めることです。スクリプトそしてsudo
その逆です。これをsudo
スクリプトに入れるのは良い考えではありません。 root権限()でスクリプト全体を実行するのが最善ですsudo script.sh
。必要にsudo
応じて、その権限を使用して特定のコマンドを削除できます。たとえば、
#!/usr/bin/env bash
whoami
echo $HOME
sudo -u terdon whoami ## drop privileges for specific command.
上記のスクリプトを実行すると、次のものが返されます。
$ sudo ~/scripts/a.sh
root
/root
terdon