vấn đề shell init khi nhấp vào tab, có gì sai với getcwd?


153

Khi tôi nhấp vào Tab trên bash, thông báo lỗi sẽ xuất hiện, có gì sai?

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

đôi khi, thông báo lỗi là:

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

Làm thế nào để giải quyết vấn đề shell init?

Câu trả lời:


280

Điều này thường xảy ra khi thư mục hiện tại của bạn không tồn tại nữa. Rất có thể, từ một thiết bị đầu cuối khác, bạn xóa thư mục đó (từ trong tập lệnh hoặc bất cứ thứ gì). Để thoát khỏi điều này, trong trường hợp thư mục hiện tại của bạn được tạo lại trong thời gian đó, chỉ cần cdđến thư mục khác (hiện có) và sau đó cdquay lại; đơn giản nhất sẽ là : cd; cd -.


2
Tôi không nghĩ rằng thư mục của tôi không tồn tại, không phải ai đó đã tạo lại nó, tôi đang ở / root ... vì vậy vấn đề có thể hơi khác so với câu nói của bạn ...
hugemeow

1
bạn có thể kiểm tra biến env HOME của bạn? echo $HOME; nếu điều đó chỉ đến một vị trí chưa có, thì đó không phải là nó.
Costi Ciudatu

1
(tôi sử dụng shell trong tmux) Tab hoạt động tốt một số lần, nhưng đôi khi khi tôi tạo tab mới bằng tmux, nhấn Tab và lỗi này xuất hiện, tôi không biết điều gì đã xảy ra :(
hugemeow

@kevinarpe Thật tốt khi biết, cảm ơn! Tôi luôn nghĩ rằng nó đủ thông minh để không làm gì cảcd .
Costi Ciudatu

2
@kevinarpe, vâng, $PWDđược đảm bảo bởi POSIX sẽ được xác định. Xem pubs.opengroup.org/onlinepub/9699919799/utilities/ory
Charles Duffy

61

Chỉ cần thay đổi thư mục sang một thư mục khác và trở lại. Có lẽ là một trong những đã bị xóa hoặc di chuyển.


7

Tình cờ, điều này có xảy ra trên một thư mục sử dụng OverlayFS (hoặc một số loại hệ thống tệp đặc biệt khác) không?

Tôi vừa gặp vấn đề này khi phiên bản bash được biên dịch chéo của tôi sẽ sử dụng triển khai nội bộ getcwdcó vấn đề với OverlayFS. Tôi tìm thấy thông tin về điều này ở đây:

Có vẻ như điều này có thể được bắt nguồn từ việc triển khai nội bộ của getcwd () trong bash. Khi được biên dịch chéo, nó không thể kiểm tra việc sử dụng getcwd () của malloc, do đó, nó thận trọng và đặt GETCWD_BROKEN và sử dụng triển khai nội bộ của getcwd (). Việc triển khai nội bộ này dường như không hoạt động tốt với OverlayFS.

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

Bạn có thể định cấu hình và xây dựng lại bash bằng bash_cv_getcwd_malloc=yes(nếu bạn thực sự xây dựng bash và thư viện C của bạn thực hiện cuộc gọi getcwd).


Tôi đã có thể sửa lỗi của mình bằng cách cập nhật toàn bộ thư viện
Richard Day

5

Vâng, cd; và cd - sẽ hoạt động. Lý do có thể thấy là, thư mục đang bị xóa khỏi bất kỳ thiết bị đầu cuối nào khác hoặc bất kỳ chương trình nào khác và tạo lại nó. Vì vậy, mục nhập nút i được sửa đổi để chương trình không thể truy cập mục nhập nút i cũ.


Tôi đã có thể sửa nó trên Ubuntu 14 bằng cách cập nhật toàn bộ thư viện tại đây: digitalocean.com/community/tutorials/ Kẻ
Ngày Richard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.