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


回答:


56

cdシェル組み込みです。sudo実行可能ファイルでのみ機能します。できますsudo sh -c 'cd dirname'が、シェルが終了するとすぐに、元のディレクトリに戻ります。あなたが達成しようとしていることを言うなら、私はあなたがそれを行う方法を見つけるのを助けることができます。


2
しかし、その後sudo pwdも機能しませんか?(私はいつもその考え出しsudo cd ない仕事を、あなただけの後に、結果を見ていないsudoに戻ります。しかし、それはちょうど野生の推測だった。たぶん、どちらcdpwd実際にビルトインされているバッシュにMac上で。ランニングはwhich cd ない確かに私に結果を与える。実行中sudo cd /エラーは発生しませんが、実際に作業ディレクトリが変更されることはありません。)
Arjan

2
@Arjan:pwdは外部実行可能ファイルでもあるため、動作します。一部のシステムにはcd実行可能ファイルがありますが、ほとんどは役に立たないことに注意してください。ちなみに、type -a cdそれを使用するよりもはるかに有益ですwhich
デニスウィリアムソン

1
いいね!type -a cd両方cd is a shell builtincd is /usr/bin/cd私のMacで表示します。そして同様にpwdecho。そして、両方sudo pwdとは、sudo echo "Hello world"私に結果を与える行います。ただし、をtype -a return生成するだけでreturn is a shell builtin、をsudo return 3表示しますsudo: return: command not found。だから、私は質問があると思います:OPはエラーメッセージを取得しますか、またはOPはcdエラーなしで作業を表示しませんか?(または:OPはどのOSを使用していますか)
アルジャン

sudo sh -c 'cd dirname'私のために何もしません。
ピーターニーダーヴィーザー

1
@Arjan私は説明を見つけました:それは深い互換性ハックのようなものです。それはその機能を実行しませんが、実際の副作用がありcdます。また、現在のシェルにcdコマンドがない場合、失敗する代わりに何もできません。これまで人間が使用することができる任意のシェルがいるcd、を含みます/bin/sh。しかし、オペレーティングシステムカーネルから見ると、シェルはそれよりもはるかに単純であり、わずか数行のコードですらあります。外部コマンドのポイントは何ですか?をcd
Volker Siegel

72

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


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


4
しかし、注意してください、一度ルートになったら
...-アルジャン

7

単純suにrootになり、cd必要なものだけにすることができます...回答はすでに受け入れられていますが、sudoersリストにない場合はこれが唯一のオプションです。


一方、rootパスワードがない場合、または知らない場合は、sudoが唯一のオプションです。
リアム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.