私は次の疑問を持っています。私がフォローしているソフトウェアのインストールに関連するチュートリアルでは、次のコマンドを実行する必要があると言っています(sshシェルで実行しているので、この手順のリストはexitコマンド):
Sudo -s
apt-get update
apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen
exit
私の疑問は次のとおりです。
Sudoコマンドの後に-s parametherは正確に何をしますか?
Webで検索すると、次のことがわかりました。
‑ s [command] ‑s(Shell)オプションは、シェル環境変数が設定されている場合はそのシェル、またはパスワードデータベースで指定されているシェルを実行します。コマンドが指定されている場合、コマンドはシェルの‑cオプションを介して実行するためにシェルに渡されます。コマンドが指定されていない場合、インタラクティブシェルが実行されます
Sudo -sシェルの環境変数を使用してコマンドを実行しているように見えます。
しかし、これは私には明らかではありません。この場合、環境変数を使用して実行されるコマンドは何ですか? (Sudo -sのみを実行し、** Sudo -s [コマンド]は実行しません)。
それが何をするのか正確に説明してもらえますか?
Tnx
マニュアルページを引用すると、-sオプションは、シェル環境変数で指定されたシェルを実行します。だからもし
echo $Shell
/bin/bash
が設定されている場合、Sudo-sは実行と同等になります
Sudo -Eu root /bin/bash
つまり、環境変数を保持しながら、シェル/ bin/bashをユーザーrootとして実行します。
オプションがない場合、基本的にSudo -s $Shell
と同等です。 $ Shellは通常、現在のシェルへのパスです。 Linuxでは、これは通常/bin/bash
ですが、他の多くのシェルの1つである可能性もあります。
Sudo -s
は、(Shell
環境変数によって)昇格された特権でシェルを開始します。
多くの場合、これはSudo bash
の実行に似ており、rootとして機能できるシェルを提供します。
Sudo -s
の後にコマンドも指定すると、コマンドはその昇格されたシェルで実行されます。