なぜ sudo cd whatever と入力してもディレクトリが変更されないのですか?
104 sri prasanna 2011-02-03
cd
はシェル組み込みの機能です。sudo
は実行ファイルに対してのみ動作します。sudo sh -c 'cd dirname'
を実行しても、シェルが終了するとすぐに元のディレクトリに戻ってしまいます。あなたが何を達成しようとしているのかを言ってくれれば、その方法を見つける手助けをします
69 Paused until further notice. 2011-02-03
代わりに、sudo -s
でルートシェルを起動し、cd
でそのディレクトリに入ってみてください。 ルートとしての作業が終わったら、CtrlDを押すか、exit
と入力してください
Arjan氏が以下のコメントで示唆しているように、ルートとして、重要なシステムコンポーネントに簡単にダメージを与えることができることに注意することが重要です。注意して使ってください
87 oKtosiTe 2011-02-03
単純にsu
でrootになって、cd
で好きなようにすればいいのですが…。私は答えがすでに受け入れられていることを知っていますが、1つはsudoersのリストにない場合は、これが唯一の選択肢です
10 Alex 2013-04-24
お使いのOSによって「動かない」方法は2つあります
OSがPOSIXに従っている場合、
sudo cd
を実行すると、外部コマンド “cd” (通常は/usr/bin/cd
にある) がルートユーザとしてフォークされたプロセスで実行されます。そのプロセスは正常にディレクトリを変更します。そのプロセスが完了すると、通常のシェルに戻りますが、そのシェルは起動したディレクトリにありますそのため、
sudo cd
はエラーなく実行されますが、現在のシェルの作業ディレクトリを変更することはありません(参考にしてください。この回答)。)
そうでなければ、
sudo cd
を実行すると以下のようなことが起こります。あなたのコンピュータはあなたのパスを調べて、”cd “という名前の実行ファイルを見つけようとします。見つかりません。(シェル組み込みコマンド “cd” だけが存在し、これは実行ファイルではありません)。したがって、エラーが出ます。(Ubuntuでは、sudo: cd: command not found
というエラーメッセージが出ます)だから
sudo cd
はエラーで走る
0 mareoraft 2019-10-28