“Sudo cd” neden çalışmıyor?


Yanıtlar:


56

cdyerleşik bir kabuktur. sudosadece çalıştırılabilirlerle çalışır. Yapabilirsin sudo sh -c 'cd dirname'ama kabuk çıkar çıkmaz, başladığın dizine geri dönersin. Neyi başarmaya çalıştığınızı söylerseniz, bunu yapmanın bir yolunu bulmanıza yardımcı olabilirim.


2
Ama sonra sudo pwdda işe yaramayacak mıydı? (Hep bunu düşündüm sudo cd yapar işi, ancak hemen sonra sonuç görmüyoruz sudogetiri. Ama bu sadece bir tahmin. Belki de değildi, cdne de pwdaslında yerleşik Bash Mac. Running Hangi which cd yok aslında bana sonuçları verir. Koşu sudo cd /bana bir hata vermez, ama gerçekten de değişen bir çalışma diziniyle sonuçlanmaz.)
Arjan

2
@Arjan: pwdAyrıca harici bir çalıştırılabilir olduğundan çalışacaktır. Bazı sistemlerde cdçalıştırılabilir bir dosya olduğunu unutmayın, ancak çoğunlukla işe yaramaz. Bu arada, type -a cdçok daha bilgilendirici kullanmayı deneyin which.
Dennis Williamson,

1
Güzel! type -a cdHer iki gösterir cd is a shell builtinve cd is /usr/bin/cdbenim Mac üzerinde. Ve aynı şekilde pwdve echo. Ve her ikisi de sudo pwdve sudo echo "Hello world"bana bir sonuç vermek yok. Ancak, type -a returnsadece verim return is a shell builtinve sudo return 3bana gösterir sudo: return: command not found. Öyleyse, sanırım soru şudur: OP bir hata mesajı alıyor mu, yoksa OP cdherhangi bir hata yapmadan işi görmüyor mu? (Veya: OP kullanan OP nedir?)
Arjan

sudo sh -c 'cd dirname'benim için hiçbir şey yapmaz.
Peter Niederwieser

1
@Arjan Açıklamayı buldum: Derin bir uyumluluk hack gibi bir şey. İşlevini yapmaz, ancak gerçek olan yan etkilerden gelmiştir cd. Ve mevcut kabuğun bir cdkomutu olmadığında başarısızlık yerine hiçbir şey yapamaz . Hiç insanlar tarafından kullanılıyor olabilir Herhangi kabuk vardır cddahil /bin/sh. Ancak işletim sistemi çekirdeğinden görülen bir kabuk , sadece birkaç satır koddan bile daha basit olabilir. Bkz . cdHarici komutun amacı nedir ?
Volker Siegel

72

Bunun yerine, sudo -sbir kök kabuğunu başlatmak için kullanmayı ve ardından cddizine girmeyi deneyin .
Kök olarak işiniz bittiğinde, tuşuna basın CtrlDveya yazın exit.


Arjan aşağıdaki yorumunda işaret ettiğinden, kök olarak, temel sistem bileşenlerine kolayca zarar verebileceğini not etmek önemlidir. Dikkatli kullanın!


4
Ancak: dikkatli olun, bir kere kök ...
Arjan

7

Basitçe sukök ve sonra cdistediğin kadar olabilirsin ... Bir cevabın zaten kabul edildiğini biliyorum, ama sudo'lar listesinde değilse, tek seçenek budur.


Öte yandan, root şifresi yoksa veya bilmiyorsanız, sudo tek seçenektir.
Liam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.