「sudo cd」が機能しないのはなぜですか?

「sudo cd」が機能しないのはなぜですか?

なぜタイピングするのかsudo cd 何でもディレクトリは変更されませんか?

答え1

cdはシェルの組み込みコマンドです。sudo実行可能ファイルでのみ機能します。実行はできますsudo sh -c 'cd dirname'が、シェルが終了するとすぐに、開始したディレクトリに戻ります。何を達成しようとしているのかを教えていただければ、それを実現する方法を見つけるお手伝いをします。

答え2

代わりに、 を使用してsudo -sルート シェルを起動し、cdディレクトリに入るようにしてください。
ルートとして完了したら、 を押すCtrlDか、 と入力しますexit


Arjan が以下のコメントで示唆しているように、root になると重要なシステム コンポーネントに簡単に損傷を与える可能性があることに注意することが重要です。ご注意の上ご使用ください!

答え3

単にsuroot になって、あとはcd必要なことだけです... すでに回答が受け入れられていることは承知していますが、sudoers リストにない場合はこれが唯一のオプションです。

答え4

OS に応じて、動作しない方法が 2 つあります。

  1. OSがPOSIXに準拠している場合、実行するsudo cd外部コマンド「cd」(通常は にあります/usr/bin/cd)を実行して、ルート ユーザーとして分岐プロセスを実行します。このプロセスはディレクトリを正常に変更します。このプロセスが完了すると、通常のシェルに戻りますが、シェルは開始したディレクトリに残っています。

    したがって、sudo cdエラーなしで実行されますが、現在のシェルの現在の作業ディレクトリは変更されません。

    (参照:この答え

  2. それ以外の場合、実行するとsudo cd次のことが起こります。コンピュータはPATHを調べて「cd」という名前の実行ファイルを探します。見つかりません。(シェル組み込みコマンド「cd」は存在しますが、これは実行可能ファイルではありません。そのため、エラーが発生します。 (Ubuntu では、エラー メッセージが表示されますsudo: cd: command not found。)

    そのため、sudo cdエラーが発生します。

関連情報