1. ホーム
  2. linux

sudo権限で現在のシェルでシェルスクリプトを実行する

2023-09-03 08:51:32

質問

現在のシェルでシェルスクリプトを実行するために、ピリオド . または source というコマンドで実行できます。しかし、なぜsudo権限で動作しないのでしょうか?

という実行権限を持つスクリプトがあります。 setup.sh . ピリオドを使うと、こうなります。

$ sudo . ./setup.sh 
sudo: .: command not found

sourceコマンドでも同様のエラーが発生します。何か見落としているのでしょうか?同じシェルでsudo権限でスクリプトを実行するにはどうしたらよいでしょうか?

前もってありがとうございます.

どのように解決するのですか?

あなたがやろうとしていることは不可能です。現在のシェルは、通常のユーザー ID で実行されています (つまり、root のアクセス権がなく sudo が与えるアクセス権なし)、そして root アクセスを許可する方法はありません。 . 何 sudo は、root として実行される新しい *sub*process を作成します。このサブプロセスは単なる普通のプログラム (例えば sudo cp ... を実行します。 cp プログラムをルートプロセスで実行します)、あるいはルートサブシェルかもしれませんが、それは はできません。 は現在のシェルではありません。

(実際にはそれ以上に不可能です。 sudo コマンド自体は現在のシェルのサブプロセスとして実行されるため、ある意味ではすでに手遅れで、現在のシェルでは何もできないことを意味しています)。