別のユーザーとして 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

関連情報