sudo cd」が動かないのはなぜですか?

sudo

なぜ 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つあります

  1. OSがPOSIXに従っている場合、sudo cdを実行すると、外部コマンド “cd” (通常は/usr/bin/cdにある) がルートユーザとしてフォークされたプロセスで実行されます。そのプロセスは正常にディレクトリを変更します。そのプロセスが完了すると、通常のシェルに戻りますが、そのシェルは起動したディレクトリにあります

    そのため、sudo cdはエラーなく実行されますが、現在のシェルの作業ディレクトリを変更することはありません

    (参考にしてください。この回答)。)

  2. そうでなければ、sudo cdを実行すると以下のようなことが起こります。あなたのコンピュータはあなたのパスを調べて、”cd “という名前の実行ファイルを見つけようとします。見つかりません。(シェル組み込みコマンド “cd” だけが存在し、これは実行ファイルではありません)。したがって、エラーが出ます。(Ubuntuでは、sudo: cd: command not foundというエラーメッセージが出ます)

    だからsudo cdはエラーで走る

0  mareoraft  2019-10-28


タイトルとURLをコピーしました