他のユーザーとしてsudoを使用してCDを実行中に問題が発生しました。

他のユーザーとしてsudoを使用してCDを実行中に問題が発生しました。

他のユーザーに代わってシェルでコマンドを実行したいと思います。コマンドは次のとおりです。

sudo -u USER cd /home/USER

わかりました。

sudo: cd: command not found

sudoに渡されたコマンドの正しい構文は何ですか?

答え1

cd内蔵ケース。シェル組み込みコマンドを実行するには、シェルを呼び出す必要があります。

sudo -u USER sh -c 'cd /home/USER'

または

sudo -u USER bash -c 'cd /home/USER'

答え2

cd外部コマンドではなく単にシェル組み込みなので、sudo実行する方法はありません。cdシェル組み込みとしてのみ存在するのは、あるプロセスが別のプロセスの現在のディレクトリに影響を与えることができないためです。したがって、現在のディレクトリを変更してすぐに終了するプログラムは役に立ちません。 (ほとんど役に立たない。cdプログラムは成功を示す状態を返す。)

ディレクトリに変更して他のユーザーとしてコマンドを実行するには、そのすべてを実行するシェルを実行します。

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

答え3

私は以下を使用する傾向があります。sudo su - USERNAMEその後、そのユーザーが要求したことを行います。終了するには、次のように入力します。exit

関連情報