ทำไม“ sudo cd” ไม่ทำงาน?


คำตอบ:


56

cdเป็นเชลล์ในตัว sudoใช้งานได้กับไฟล์ที่เรียกทำงานได้เท่านั้น คุณสามารถทำได้sudo sh -c 'cd dirname'แต่ทันทีที่เชลล์ออกคุณจะกลับสู่ไดเรกทอรีที่คุณเริ่มต้น หากคุณพูดในสิ่งที่คุณกำลังพยายามทำให้สำเร็จฉันสามารถช่วยคุณหาวิธีในการทำสิ่งนั้น


2
แต่sudo pwdจะไม่ทำงานเช่นกัน? (ฉันมักจะคิดว่าsudo cd ไม่ทำงาน แต่คุณก็ไม่เห็นผลหลังจากที่sudoผลตอบแทน. แต่นั่นก็เป็นเพียงแค่การคาดเดาป่า. อาจจะค่าcdมิได้pwdมีในตัวจริงในการทุบตีบน Mac. ทำงานwhich cd ไม่แน่นอนให้ฉันผล. วิ่งsudo cd /ไม่ให้ฉันข้อผิดพลาด แต่แน่นอนไม่ได้ผลในไดเรกทอรีการทำงานมีการเปลี่ยนแปลง).
Arjan

2
@Arjan: pwdยังเป็นไฟล์ปฏิบัติการภายนอกดังนั้นมันจึงใช้งานได้ โปรดทราบว่าในบางระบบจะมีการcdปฏิบัติการ แต่ส่วนใหญ่จะไม่มีประโยชน์ ลองใช้type -a cdมันให้ข้อมูลมากกว่าwhichนั้น
Dennis Williamson

1
ดี! type -a cdแสดงให้เห็นว่าทั้งสองcd is a shell builtinและcd is /usr/bin/cdบน Mac ของฉัน ทำนองเดียวกันและpwd echoและทั้งสอง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งานโดยไม่มีข้อผิดพลาดหรือไม่? (หรือ: โอเพ่นที่ใช้คือ OS)
Arjan

sudo sh -c 'cd dirname'ไม่ได้ทำอะไรเพื่อฉัน
Peter Niederwieser

1
@Arjan ฉันพบคำอธิบาย: มันเป็นเหมือนแฮ็คเข้ากันได้ลึก มันไม่ได้ทำหน้าที่ของมัน แต่มันมาจากผลข้างเคียงที่แท้จริงcdมี และมันไม่สามารถทำอะไรได้เลยแทนที่จะล้มเหลวเมื่อเชลล์ปัจจุบันไม่มีcdคำสั่ง เปลือกใด ๆ ที่อาจเคยถูกใช้โดยมนุษย์มีรวมทั้งcd /bin/shแต่โปรแกรมที่เห็นได้จากเคอร์เนลระบบปฏิบัติการเชลล์สามารถทำได้ง่ายกว่านั้นมากแม้แต่รหัสสองสามบรรทัด ดูจุดประสงค์ของcdคำสั่งภายนอกคืออะไร
Volker Siegel

72

ให้ลองใช้sudo -sเพื่อเริ่มรูทเชลล์จากนั้นcdเข้าไดเรกทอรี
เมื่อคุณทำเสร็จเป็นรากกดหรือประเภทCtrlDexit


ดังที่ Arjan บอกไว้ในความคิดเห็นของเขาด้านล่างมันเป็นสิ่งสำคัญที่จะต้องทราบว่าในฐานะที่เป็นรากหนึ่งสามารถสร้างความเสียหายให้กับองค์ประกอบของระบบที่จำเป็น ใช้ด้วยความระมัดระวัง!


4
แต่: ระวังเมื่อมีคนรู้ท ...
อาร์ยัน

7

คุณสามารถsuกลายเป็นรูทได้และจากนั้นcdทั้งหมดที่คุณต้องการ ... ฉันรู้ว่าคำตอบได้รับการยอมรับแล้ว แต่ถ้าไม่มีใครอยู่ในรายการ sudoers นี่เป็นตัวเลือกเดียวเท่านั้น


ในทางกลับกันหากไม่มีรหัสผ่านรูทหรือคุณไม่รู้ sudo เป็นเพียงตัวเลือกเดียว
เลียม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.