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

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

StackOverflow の回答の多くは、 がcd組み込みであるためだと示唆していますが、type cdと はtype pwd両方とも「シェル組み込み」を返し、sudo cd「コマンドが見つかりません」とだけ返します。

つまり、 「プログラムでのみ機能する」cdという SO の多くの回答とは反対に、特別なケースとして扱われるのでしょうか?sudo

答え1

pwdシェル組み込み関数として存在する(これがtype pwdシェル組み込み関数であることを示す理由である)GNU コアユーティリティpwdシステムが使用している のバージョンはGNU コアユーティリティバージョン。これは実行可能ファイルなので、cdシェルの組み込みコマンドである sudo を使用して実行できます。

これを自分で確認することができます。

これらのコマンドの両方を自分で入力し、結果を確認します。(システム内に同じコマンドの複数のバージョンがある場合、whichコマンドを入力すると、どのバージョンが呼び出されるかがわかります)

which pwd

which cd

シェル組み込みコマンドでは、コマンドを実行しても実行可能ファイルへのフォルダー パスは返されませんwhich。以下は、私のシステムでの両コマンドの出力例です。

nate@linux:~> which pwd  
/usr/bin/pwd


nate@linux:~> which cd
which: no cd in (/home/nate/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:/home/nate/Scripts:/home/nate/Scripts)

答え2

どこかに実行ファイルがありpwd(試してくださいwhereis pwd)、sudoそれを使用します。

関連情報