เหตุใด BASH จึงพิมพ์“ bash: cd: write error: Success”


12

วันนี้ฉันสังเกตเห็นหลายครั้ง หากฉันพิมพ์cd ../Directoryเพื่อเปลี่ยนเป็นไดเร็กทอรีอื่นจะพิมพ์ "bash: cd: write error: Success" ฉันไม่สามารถกำหนดคำสั่งก่อนหน้านี้ที่เกี่ยวข้องกับสิ่งนี้ได้

  • typeset -f พิมพ์อะไร
  • alias พิมพ์อะไร
  • type -a cd พิมพ์ "cd เป็นเชลล์ในตัว"
  • echo $CDPATH พิมพ์บรรทัดว่าง
  • $BASH_VERSION พิมพ์ "bash: 4.2.37 (1) -release: ไม่พบคำสั่ง"
  • ฉันสังเกตแค่ 2-3 ครั้งเท่านั้น ไดเร็กทอรีเริ่มต้นและไดเร็กทอรีเป้าหมายเหมือนกันในทั้งสองสถานการณ์ ฉันเปลี่ยนไดเรกทอรีในลักษณะนี้หลายครั้ง แต่ไม่พบข้อผิดพลาดเสมอ

สิ่งที่อาจทำให้เกิดสิ่งนี้


โปรดเพิ่มผลลัพธ์type -a cdตามที่ Glenn ร้องขอ
terdon

โปรดเพิ่มผลลัพธ์ของtypeคำสั่งลงในคำถามของคุณ นอกจากนี้สิ่งนี้จะเกิดขึ้นในไดเรกทอรีทั้งหมดหรือเฉพาะเมื่อคุณอยู่ในไดเรกทอรีที่ระบุหรือไม่ และผลผลิตของecho $CDPATHคืออะไร?
terdon

$BASH_VERSIONคุณกำลังใช้เวอร์ชันทุบตีรุ่นใด
Gabe

bash 4.2.37(1)ฉันมี
หมู่บ้าน

คำตอบ:


6

อาจจะเป็นข้อผิดพลาด?

ดูเหมือนว่าข้อผิดพลาดที่อาจเกิดขึ้น ฉันพบรายงานที่คล้ายกันซึ่งแสดงข้อความเดียวกัน ข้อผิดพลาดทุบตี: PWD builtin ออกด้วยข้อผิดพลาดในการเขียน: ความสำเร็จ

สิ่งที่สกัดมา

ข้อความนี้จะปรากฏขึ้นหาก ferror (stdout) ส่งคืนค่าที่ไม่ใช่ศูนย์ ด้วยเหตุผลบางอย่าง (อาจเป็นการเรียก fflush () ก่อนหน้าการตรวจสอบทันที) stdio ทำให้ ferror () กลับสู่จริงโดยไม่ต้องตั้งค่า errno

สิ่งนี้เกิดขึ้นสองครั้งติดต่อกันหรือไม่? pwd builtin เรียก clearerr () หลังจากพิมพ์ข้อความแสดงข้อผิดพลาดดังนั้นแม้ว่า stdout error flag `sticks 'ควรจะเคลียร์มัน

ไม่สามารถอัปเดตประวัติได้ใช่ไหม

ข้อผิดพลาดทำให้ฉันคิดว่าการเปลี่ยนไดเรกทอรีสำเร็จ แต่ไม่สามารถเขียนคำสั่งcd ../Directoryให้คุณ$HOME/.bash_historyได้ ฉันขอยืนยันว่าไฟล์นี้ไม่เสียหายและเขียนได้ นอกจากนี้ยังยืนยันว่า$HOMEไดเรกทอรีของคุณเขียนได้และไม่เต็ม

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home

/homeพาร์ทิชันที่มีพื้นที่มากสามารถใช้ได้ ฉันไม่พบสิ่งแปลก ๆ ใน ".bash_history" มันถูกตั้งค่าให้อ่านและเขียนสำหรับเจ้าของเท่านั้น เมื่อใดก็ตามที่ฉันออกจากเทอร์มินัลข้อมูลจากเทอร์มินัลนั้นก็ยังคงอยู่ที่นั่น เป็นไปได้หรือไม่ที่สิ่งนี้เกิดขึ้นเพราะฉันใช้หลายหน้าต่างเทอร์มินัลในเวลาเดียวกัน?
หมู่บ้าน

@ หมู่บ้าน - บางที แต่ทุกครั้งที่คำสั่งรันในเชลล์มันควรจะได้รับการล็อคไฟล์ประวัติและปล่อยเมื่อมันเสร็จสิ้นกระบวนการอื่น ๆ ที่ทำแบบเดียวกันทุกอย่างจะรอ
slm

bash ไม่ได้เขียนไป~/.bash_historyทันทีหลังจากรันคำสั่ง แต่หลังจากปิดเซสชันใช่ไหม?
SOFe

@Pemapmodder - ถูกต้องมันก็ชัดเจนกับผมถ้า OP ได้ทำอะไรเช่นนี้askubuntu.com/questions/67283/...
slm

ฉันพบปัญหาเดียวกันและฉันค่อนข้างแน่ใจว่ามันไม่เป็นความจริง (เพราะฉันsu rootในเวลานั้นและฉันทันทีtail /root/.bash_historyและไม่เห็นสิ่งใดที่เกี่ยวข้องจากนั้นexitกลับไปที่ผู้ใช้ปกติของฉันจากนั้นsudo tail /root/.bash_historyและบรรทัด (ทั้งสองบรรทัด) ตั้งแต่ฉันซ้ำcd) ถูกเขียนแน่นอน
SOFe

3

คำสั่ง cd ของคุณอาจเป็น alias หรือเป็นฟังก์ชัน bash

typeset -f  # displays functions
alias       # display aliases

หากไม่พบด้วยคำสั่งข้างต้นwhich cdจะค้นหาเส้นทางของcdคำสั่ง

มองหาcdนามแฝงหรือฟังก์ชั่นความหมายในสคริปต์เริ่มต้นปกติ.bash_profile, และ.bashrc.profile


typeset -f, aliasและwhich cdทั้งหมดไม่มีอะไรตอบแทนและไฟล์อื่น ๆ เพียง PATH=~/.context/tex/texmf-linux/bin/:$PATHแต่มี
หมู่บ้าน

2
ใช้type -a cd
เกล็นแจ็คแมน

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