回答:
cd
は外部コマンドではなく、単なるシェル組み込みコマンドであるため、sudo
実行できません。cd
シェル組み込みとしてのみ存在する理由は、プロセスが別のプロセスの現在のディレクトリに影響を与えることができないためです。したがって、現在のディレクトリを変更してすぐに終了するプログラムは役に立ちません。(ほとんど役に立たない:cd
プログラムは成功したかどうかを示すステータスを返します。)
ディレクトリに移動してから別のユーザーとしてコマンドを実行する場合は、すべてを実行するシェルを実行します。
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
私は使用する傾向があります:sudo su - USERNAME
そして、そのユーザーとして必要なことを行います。入力するだけで終了しますexit
USERNAME
し、コマンドを実行すると、直接のコマンドを実行することが異なっているUSERNAME
cd
。シェルはの直後に終了します。OPはおそらく望んでいsudo -i
ます。