別のユーザーに代わってシェルでコマンドを実行したいです。コマンドは次のとおりです。
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