Yanıtlar:
cdbir kabuk yerleşiktir . Kabuk yerleşiklerini yürütmek için kabuğu çağırmanız gerekir:
sudo -u USER sh -c 'cd /home/USER'
VEYA
sudo -u USER bash -c 'cd /home/USER'
cdharici bir komut değildir, yalnızca bir kabuk yerleşikidir, bu yüzden sudoçalıştırılamaz. cdYalnızca kabuk yerleşimi olarak var olmasının nedeni , bir işlemin başka bir işlemin geçerli dizinini etkileyememesidir; bu nedenle, geçerli dizini değiştiren ve hemen çıkan bir program işe yaramaz. (Neredeyse işe yaramaz: Bir cdprogram başarılı olup olmadığını gösteren bir durum döndürür.)
Bir dizine geçmek ve sonra komutları başka bir kullanıcı olarak çalıştırmak istiyorsanız, tüm bunları yapan bir kabuk çalıştırın.
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
Kullanmaya eğilimliyim: sudo su - USERNAMEve sonra o kullanıcı olarak ihtiyacınız olanı yapın. Çıkmak için sadece şunu yazınexit
USERNAMEve ardından komutu yürütme, komutu doğrudan çalıştırandan farklıdırUSERNAME
cd. Muhtemelen OP istiyorsudo -i.