sh: 0: getcwd () không thành công: Không có tệp hoặc thư mục như vậy


11

Tôi đang cố gắng biên dịch mã ARM trong Ubuntu 12.04.

Mọi thứ đều hoạt động tốt khi tôi đặt mã của mình vào thư mục cục bộ. Nhưng khi tôi đặt mã trong thư mục mount trích dẫn thì lỗi này xảy ra:

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

Đây là lệnh mount của tôi:

sudo mount -t cifs -o username=wx,passwd=wx,auto,nounix,noserverino,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm,rw,uid=1002,gid=1002 //192.165.54.18/prj_9330  /home/dongjw/work_dir/work_9330

Tôi đang sử dụng Ubuntu 12.04 64 bit

Điều gì sẽ gây ra lỗi này?


1
Thư mục làm việc của bạn không còn tồn tại nữa. Nhập cd [PATH]vào vỏ của bạn để đi đến một cái hiện có.
David Foerster

Câu trả lời:


7

Tôi đã gặp lỗi này khi sử dụng jshint thông qua quy trình con python trên Ubuntu 12.10 64 bit.

node.js:464
var cwd = process.cwd();
                  ^
Error: ENOENT, no such file or directory
    at Function.resolveArgv0 (node.js:464:23)
    at startup (node.js:51:13)
    at node.js:555:3

Nó được gây ra bởi vì bạn đã xóa hoặc di chuyển một thư mục từ bên dưới nó và thư mục hiện tại không thể được xác định.

Làm thế nào để biết nếu bạn đang gặp vấn đề này:

Chạy lệnh cd . (Nếu bạn gặp lỗi này thì bạn gặp vấn đề này).

el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent 
directories: No such file or director

Bạn đã cố gắng thay đổi thư mục vào thư mục hiện tại của bạn và không thể.

Cách tái tạo lỗi:

jshint bị ảnh hưởng bởi lỗi này. Tạo một thư mục foo, cd vào nó, tạo một tập tin gọi làmyjavascript.js

cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js

jshint chạy chính xác, nó nói không có lỗi nào là đúng.

Mở một thiết bị đầu cuối thứ 2 và rm -rfthư mục /home/el/footừ bên dưới.

rm -rf /home/el/foo

Chạy jshint myjavascript.jslại từ thiết bị đầu cuối đầu tiên của bạn và bạn gặp lỗi:

el@apollo:~/foo$ jshint myjavascript.js 

    node.js:464
        var cwd = process.cwd();
                      ^
    Error: ENOENT, no such file or directory
        at Function.resolveArgv0 (node.js:464:23)
        at startup (node.js:51:13)
        at node.js:555:3

Thư mục đã biến mất! Và ngay cả khi bạn thay thế nó bằng cùng một nội dung, nó có chữ ký khác và thiết bị đầu cuối không thể phục hồi, phương thức getcwdkhông thể biết thư mục hiện tại là gì.

Ba giải pháp:

Thiết bị đầu cuối bị nhầm lẫn về những gì thư mục hiện tại là vì nó đã biến mất hoặc chữ ký của nó đã thay đổi. Làm một trong những điều này để sửa nó:

  1. Chạy lệnh cd ..cho đến khi bạn ngừng nhận được lỗi. Điều này tái đồng bộ thiết bị đầu cuối với hệ thống tập tin. Sau đó cd trở lại vào thư mục của bạn. Thử lại. Lỗi biến mất.

  2. Sử dụng su yourusertrong thiết bị đầu cuối, nhập mật khẩu. Nó làm mới và đưa bạn trở lại cùng một thư mục.

  3. Đóng và mở lại thiết bị đầu cuối giúp loại bỏ các chữ ký thư mục cũ. Hoặc gửi một nastymail đến bất kỳ chương trình nào (jshint) hoặc hàng ngàn chương trình khác không thể chịu đựng hoặc phục hồi từ chữ ký thư mục cũ.


thay vì chạy cd .."thường xuyên đủ", bạn cũng có thể cd ~trực tiếp đến nhà của mình
derHugo

4

Tôi nhận được cùng một lỗi, nhưng tôi đã cố chạy một tập lệnh trong thư mục nhà của tôi. Tôi đã giải quyết nó bằng:

pushd ~ 1>/dev/null; pwd ; popd 1>/dev/null

Điều này di chuyển tôi đến thư mục nhà của tôi, sau đó chạy pwd (nhưng bạn có thể chạy bất cứ thứ gì bạn thích) và sau đó popd di chuyển tôi trở lại nơi tôi đang ở. Nếu bạn không cần phải quay lại thì

cd; pwd

Sẽ đủ để giải quyết vấn đề của tôi, (tôi hy vọng rằng nó sẽ giúp ích cho bạn.)

chỉnh sửa Các 1>/dev/nullphần là tùy chọn; Tôi thêm chúng để tôi có thể sử dụng dòng trên trong tập lệnh shell mà không cần đầu ra bổ sung không cần thiết trong trường hợp này.


Vì vậy, tôi có thể vượt qua điều này thành một tập lệnh bash và không kết thúc với đầu ra mà tôi không muốn. Tôi cố gắng thêm một câu trả lời đầy đủ nhất có thể bởi vì khi tôi tìm thấy dòng lệnh-fu tôi thấy thật dễ dàng để cắt nó theo nhu cầu của tôi và tôi hy vọng bất cứ ai đang sử dụng điều này sẽ hơi giống tôi.
Alexx Roche

ok, tôi đã thêm một bản chỉnh sửa giải thích, (mặc dù một số người có thể cảm thấy rằng tôi đang dạy họ hút trứng - những người biết không cần chỉnh sửa và những người không biết có thể cắt-dán hoặc tìm kiếm chức năng không liên quan trực tiếp đến câu hỏi ban đầu.)
Alexx Roche

Đáng buồn là như thế :(
Braiam

-1

Ngay cả tôi cũng gặp vấn đề tương tự với python virtualenv. Nó đã được sửa chữa bằng một khởi động lại đơn giản

sudo shutdown -r now

2
Tôi không nghĩ bạn sẽ cần phải khởi động lại để sửa nó, chỉ cần làm theo các câu trả lời khác ở đây và cdđến một thư mục hiện có.
wjandrea

Nếu bạn có một câu hỏi mới, vui lòng hỏi nó bằng cách nhấp vào nút Hỏi câu hỏi . Bao gồm một liên kết đến câu hỏi này nếu nó giúp cung cấp bối cảnh. - Từ đánh giá
N0rbert

1
@ N0rbert Đây không phải là một câu hỏi mới, rõ ràng đây là một nỗ lực để trả lời và cung cấp giải pháp IMHO hợp lệ (mặc dù chắc chắn không tối ưu).
Chỉ huy Byte

@ByteCommander Tôi đã bấm nhầm, tôi xin lỗi.
N0rbert
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.