sh: 0: getcwd () ล้มเหลว: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวในไดรฟ์ที่อ้างถึง


212

ฉันพยายามรวบรวมรหัส ARM ใน Ubuntu 12

ทุกอย่างทำงานได้ดีเมื่อฉันใส่รหัสในไดเรกทอรีท้องถิ่น

แต่เมื่อฉันใส่รหัสในข้อผิดพลาดไดเรกทอรีอ้างอิงเมาแสดงขึ้น:

making testXmlFiles
sh: 0: getcwd() failed: No such file or directory
ARM Compiling xxxxx.c
sh: 0: getcwd() failed: No such file or directory

นี่คือการตั้งค่าของฉันใน fstab

//10.0.0.1/data /mnt/data   cifs    auto,noserverino,credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm 0 0

เกิดขึ้นที่นี่คืออะไร? สิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้?


ฉันลองใน Ubuntu 10.10 มันใช้งานได้ดีกับการตั้งค่าเดียวกัน
CrazyKitty Rotoshi

49
ข้อความแสดงข้อผิดพลาดนี้อาจถูกกระตุ้นเมื่อพยายามเรียกใช้คำสั่งจากพา ธ ที่ไม่มีอยู่ (เช่นหากกระบวนการ B ลบโฟลเดอร์ที่กระบวนการอยู่ในปัจจุบันอยู่ A ตัวอย่างชีวิตจริง: ในเทอร์มินัล A: mkdir ~/myfunnydir && cd ~/myfunnydirในเทอร์มินัล B: rm -rf ~/myfunnydirและในที่สุดก็กลับมาอยู่ในขั้วอีกครั้ง: java --version)
DBM

ไดเรกทอรีของคุณเป็นรถยนต์ที่ติดตั้งอยู่ /rootแต่ข้อมูลประจำตัวที่ถูกเก็บไว้ใน ผู้ใช้ทั่วไปจะไม่สามารถเชื่อมต่อได้เพราะข้อมูลประจำตัวจะไม่สามารถอ่านได้ ลองทำให้เป็นเมาท์ที่ไม่ใช่อัตโนมัติและปล่อยให้รูทเมาต์
alvits

คำตอบ:


564

ข้อผิดพลาดนี้มักเกิดจากการรันคำสั่งจากไดเรกทอรีที่ไม่มีอยู่อีกต่อไป

ลองเปลี่ยนไดเรกทอรีของคุณแล้วรันคำสั่งอีกครั้ง


4
getcwdรับไดเรกทอรีทำงานปัจจุบันและถ้าไดเรกทอรีถูกลบหรือย้ายมันจะไม่มีความสุข! ดูคู่มือ Linux สำหรับ getcwd
Hooman

2
คุณอาจต้องทำเช่นนี้หากคุณลบไดเรกทอรีที่คุณอยู่และสร้างขึ้นใหม่ในที่เดียวโดยใช้ชื่อเดียวกัน
แจ็คสัน

จริงแน่นอน! ดี!
farhad goodarzi

1
ทั้งหมดที่ฉันทำคือซีดีเพลงและสั่งการทำงานอีกครั้งและทำงานได้ดีขอบคุณ!
FreeSoftwareServers

สังเกตเห็นตัวเองเมื่อทำการอัพเกรด apt-get จากไดเรกทอรีที่ไม่มีอยู่ ข้อความดังกล่าวมีความเสียหายประมาณ 20 ครั้งจากนั้นการอัพเดทจะดำเนินต่อไปราวกับไม่มีอะไรเกิดขึ้น ฉันหวังว่าจะได้รับข้อมูลเพิ่มเติมว่าเหตุใด apt-get แม้กระทั่งใส่ใจว่าโฟลเดอร์ใดที่ฉันอยู่
Darren Ringer

11

ลองใช้คำสั่งต่อไปนี้มันใช้งานได้สำหรับฉัน

cd; cd -

มันหมายความว่าอะไร?
dılosürücü

cd;โดยปกติจะนำคุณไปยังไดเรกทอรีภายในบ้านและcd -นำคุณกลับไปยังไดเรกทอรีที่คุณอยู่ก่อนไดเรกทอรีปัจจุบัน โดยพื้นฐานแล้วคุณไปที่โฮมไดเร็กตอรี่แล้วกลับมา. อย่างไรก็ตามหากลบไดเรกทอรีดั้งเดิมที่คุณใช้อยู่จะไม่สามารถใช้งานได้
Hooman

7

ที่เกิดขึ้นกับฉันในไดเรกทอรีสร้างใหม่ไดเรกทอรีเดียวกัน แต่เพื่อให้ทำงานอีกครั้งเพียงแค่เรียกใช้:

cd .

6

สิ่งนี้สามารถเกิดขึ้นได้กับ symlink ในบางครั้ง หากคุณพบปัญหานี้และคุณรู้ว่าคุณอยู่ในไดเรกทอรีที่มีอยู่ แต่ symlink ของคุณอาจมีการเปลี่ยนแปลงคุณสามารถใช้คำสั่งนี้:

cd $(pwd)

4

ใน Ubuntu 16.04.3 LTS คำสั่งถัดไปใช้งานได้สำหรับฉัน:

exit

จากนั้นฉันเข้าสู่ระบบอีกครั้ง


2
ที่จริงมันจะเพียงพอที่จะสลับไปยังไดเรกทอรีที่มีอยู่เป็น Hooman แล้วเขากล่าวในคำตอบ
derHugo

2

โปรดตรวจสอบเส้นทางไดเรกทอรีว่ามีอยู่หรือไม่ ข้อผิดพลาดนี้เกิดขึ้นหากโฟลเดอร์ไม่มีอยู่จากตำแหน่งที่คุณเรียกใช้คำสั่ง อาจเป็นไปได้ว่าคุณได้ดำเนินการลบคำสั่งจากเส้นทางเดียวกันในบรรทัดคำสั่ง


1
นั่นคือสิ่งที่ Hooman ได้กล่าวไว้ในคำตอบของเขาแล้ว
derHugo

0

ในกรณีของฉันไม่มีอะไรข้างต้นได้ผล หลังจากปะทะหัวกับกำแพงซักพักฉันรู้ว่าฉันได้ทำลาย/etc/passwdรายการโดยใช้ linux-server-setup-bash-script ที่กำหนดเองซึ่งใช้งานได้ดี แต่คราวนี้ regex ภายใน คำสั่ง "sed" ลบรายการที่มีอยู่ทั้งหมด: D หลังจากคัดลอกการวางรายการเริ่มต้นจากเซิร์ฟเวอร์ linux อื่นที่ใช้งานได้ในที่สุดฉันก็สามารถรีสตาร์ท sshd ในที่สุด

ดังนั้นอย่าลืมสำรอง/etc/passwdไฟล์ต้นฉบับก่อนที่จะใช้การแทนที่ regex กับมัน :)


-8

แม้ฉันมีปัญหาเดียวกันกับ python virtualenv มันได้รับการแก้ไขโดยการรีสตาร์ทอย่างง่าย

sudo shutdown -r now

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