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