ปัญหา shell init เมื่อคลิกที่แท็บมีอะไรผิดพลาดกับ getcwd?


153

เมื่อฉันคลิก Tab ที่ bash ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นเกิดอะไรขึ้น

symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success

บางครั้งข้อความแสดงข้อผิดพลาดคือ:

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory

วิธีการแก้ปัญหาเปลือก init?

คำตอบ:


281

สิ่งนี้มักจะเกิดขึ้นเมื่อไดเรกทอรีปัจจุบันของคุณไม่มีอยู่อีกต่อไป เป็นไปได้มากว่าคุณจะลบไดเรกทอรีนั้นออกจากเทอร์มินัลอื่น (จากภายในสคริปต์หรืออะไรก็ตาม) หากต้องการกำจัดสิ่งนี้ในกรณีที่ไดเรกทอรีปัจจุบันของคุณถูกสร้างขึ้นใหม่ในขณะเดียวกันcdให้ไปยังไดเรกทอรีอื่น (ที่มีอยู่) แล้วcdกลับมา สิ่งที่ง่ายที่สุดคือ: cd; cd -.


2
ฉันไม่คิดว่า dir ของฉันไม่มีอยู่ไม่มีใครสร้างมันขึ้นมาใหม่ฉันอยู่ใน / รูท ... ดังนั้นปัญหาอาจแตกต่างออกไปเล็กน้อยตามคำพูดของคุณ ...
hugemeow

1
คุณตรวจสอบตัวแปร env หน้าแรกได้ไหม? echo $HOME; ถ้าสิ่งนั้นชี้ไปยังตำแหน่งที่ไม่มีอยู่
Costi Ciudatu

1
(ฉันใช้เชลล์ใน tmux) แท็บทำงานได้ดีบางครั้ง แต่บางครั้งเมื่อฉันสร้างแท็บใหม่ด้วย tmux กด Tab และข้อผิดพลาดนี้ปรากฏขึ้นฉันไม่รู้ว่าเกิดอะไรขึ้น :(
hugemeow

@kevinarpe ขอบคุณมากที่รู้! ฉันคิดเสมอว่ามันฉลาดพอที่จะไม่ทำอะไรเลยcd .
Costi Ciudatu

2
@kevinarpe ใช่$PWDรับประกันโดย POSIX ที่จะกำหนด ดูpubs.opengroup.org/onlinepubs/9699919799/utilities/ …
Charles Duffy

61

เพียงเปลี่ยนไดเรกทอรีเป็นไดเรกทอรีอื่นแล้วกลับมา อาจมีการลบหรือย้าย


7

บังเอิญมีสิ่งนี้เกิดขึ้นในไดเรกทอรีที่ใช้ OverlayFS (หรือระบบไฟล์ชนิดพิเศษอื่น ๆ )

ฉันเพิ่งมีปัญหานี้ที่ทุบตีรุ่นรวบรวมข้ามของฉันจะใช้การดำเนินการภายในgetcwdซึ่งมีปัญหากับ OverlayFS ฉันพบข้อมูลเกี่ยวกับสิ่งนี้ที่นี่:

ดูเหมือนว่าสิ่งนี้สามารถตรวจสอบได้กับการใช้งานภายในของ getcwd () ใน bash เมื่อคอมไพล์ข้ามมันไม่สามารถตรวจสอบการใช้ getcwd () ของ malloc ดังนั้นจึงระมัดระวังและตั้งค่า GETCWD_BROKEN และใช้การใช้งานภายในของ getcwd () การใช้งานภายในนี้ดูเหมือนจะทำงานได้ไม่ดีกับ OverlayFS

http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204

คุณสามารถกำหนดค่าและสร้าง bash ใหม่ได้ด้วยbash_cv_getcwd_malloc=yes(ถ้าคุณกำลังสร้าง bash จริง ๆ และไลบรารี C ของคุณจะใช้การเรียก getcwd)


ฉันสามารถแก้ไขข้อผิดพลาดได้โดยทำการอัปเดตห้องสมุดเต็มรูปแบบ
Richard Day

5

ใช่ cd; และ cd - จะได้ผล เหตุผลที่เห็นคือไดเรกทอรีกำลังถูกลบออกจากเทอร์มินัลอื่นหรือโปรแกรมอื่นและสร้างใหม่ ดังนั้นรายการ i-node จึงถูกแก้ไขดังนั้นโปรแกรมไม่สามารถเข้าถึงรายการ i-node เก่าได้


ฉันสามารถแก้ไขได้ใน Ubuntu 14 โดยทำการอัปเดตห้องสมุดเต็มรูปแบบได้ที่นี่: digitalocean.com/community/tutorials/ …
วันริชาร์ด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.