sh: 0: getcwd () gagal: Tidak ada file atau direktori tersebut

11

Saya mencoba mengkompilasi kode ARM di Ubuntu 12.04.

Semuanya berfungsi dengan baik ketika saya meletakkan kode saya di direktori lokal. Tetapi ketika saya meletakkan kode di direktori mount yang dikutip kesalahan ini terjadi:

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

Ini adalah perintah mount saya:

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

Saya menggunakan Ubuntu 12.04 64bit

Apa yang menyebabkan kesalahan ini?

dongjiawei
sumber
1
Direktori kerja Anda tidak ada lagi. Ketik cd [PATH]shell Anda untuk pergi ke yang sudah ada.
David Foerster
lihat juga di sini: stackoverflow.com/a/21593371/7111561
derHugo

Jawaban:

7

Saya mendapat kesalahan ini menggunakan jshint melalui subproses python di 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

Ini disebabkan karena Anda menghapus atau memindahkan direktori dari bawahnya dan direktori saat ini tidak dapat ditentukan.

Bagaimana cara mengetahui apakah Anda mengalami masalah ini:

Jalankan perintah cd . (Jika Anda mendapatkan kesalahan ini maka Anda memiliki masalah ini).

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

Anda mencoba mengubah direktori menjadi dir Anda saat ini, dan tidak bisa.

Cara mereproduksi kesalahan:

jshint dipengaruhi oleh kesalahan ini. Buat direktori foo, masukkan ke dalamnya, buat file bernamamyjavascript.js

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

jshint berjalan dengan benar, katanya tidak ada kesalahan yang benar.

Buka terminal ke-2, dan rm -rfdirektori /home/el/fookeluar dari bawah.

rm -rf /home/el/foo

Jalankan jshint myjavascript.jslagi dari terminal pertama Anda dan Anda mendapatkan kesalahan:

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

Direktori hilang! Dan bahkan jika Anda menggantinya dengan konten yang sama, ia memiliki tanda tangan yang berbeda dan terminal tidak dapat pulih, metode getcwdini tidak dapat mengetahui apa direktori saat ini.

Tiga solusi:

Terminal bingung tentang apa direktori saat ini karena hilang atau tanda tangannya telah berubah. Lakukan salah satu dari ini untuk memperbaikinya:

  1. Jalankan perintah cd ..sampai Anda berhenti mendapatkan kesalahan. Ini menyinkronkan terminal dengan sistem file. Kemudian cd kembali ke direktori Anda. Coba lagi. Kesalahan hilang.

  2. Gunakan su youruserdi terminal, masukkan kata sandi. Ini menyegarkan dan membawa Anda kembali ke direktori yang sama.

  3. Tutup dan buka kembali terminal yang membuang tanda tangan direktori basi. Atau kirim nastymail ke program apa pun (jshint) atau ribuan program lain yang tidak dapat mentolerir atau memulihkan dari tanda tangan direktori basi.

Eric Leschinski
sumber
alih-alih menjalankan cd .."cukup sering" Anda juga bisa cd ~langsung ke homefolder Anda
derHugo
4

Saya mendapatkan kesalahan yang sama, tetapi saya mencoba menjalankan skrip di direktori home saya. Saya menyelesaikannya dengan:

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

Ini memindahkan saya ke direktori rumah saya, kemudian menjalankan pwd (tetapi Anda dapat menjalankan apa pun yang Anda suka) dan kemudian popd memindahkan saya kembali ke tempat saya sebelumnya. Jika Anda tidak perlu pindah saat itu

cd; pwd

Akan cukup untuk menyelesaikan masalah saya, (Saya harap ini membantu masalah Anda.)

mengedit The 1>/dev/nullbagian yang opsional; Saya menambahkan mereka sehingga saya dapat menggunakan baris di atas dalam skrip shell tanpa output tambahan yang tidak diperlukan dalam kasus ini.

Alexx Roche
sumber
Sehingga saya bisa melewati ini menjadi skrip bash dan tidak berakhir dengan output yang tidak saya inginkan. Saya mencoba menambahkan jawaban selengkap mungkin karena ketika saya menemukan commandline-fu saya merasa mudah untuk memotongnya sesuai dengan kebutuhan saya dan saya berharap siapa pun yang menggunakan ini menjadi sedikit seperti saya.
Alexx Roche
ok, saya sudah menambahkan edit yang menjelaskan, (meskipun beberapa mungkin merasa bahwa saya sedang mengajar mereka untuk menyedot telur - mereka yang tahu tidak perlu diedit dan mereka yang tidak tahu dapat memotong-n-tempel, atau mencari yang fungsi yang tidak terkait langsung dengan pertanyaan awal.)
Alexx Roche
Sedihnya seperti itu :(
Braiam
-1

Bahkan saya mengalami masalah yang sama dengan python virtualenv. Itu diperbaiki dengan restart sederhana

sudo shutdown -r now
Yunus
sumber
2
Saya tidak akan berpikir Anda perlu me-restart untuk memperbaikinya, cukup ikuti jawaban lain di sini, dan cdke direktori yang ada.
wjandrea
Jika Anda memiliki pertanyaan baru, silakan tanyakan dengan mengklik tombol Ajukan Pertanyaan . Sertakan tautan ke pertanyaan ini jika itu membantu menyediakan konteks. - Dari Ulasan
N0rbert
1
@ N0rbert Ini bukan pertanyaan baru, ini jelas merupakan upaya untuk menjawab dan memberikan solusi IMHO yang valid (walaupun tentu saja tidak optimal).
Byte Commander
@ByteCommander Saya mengklik ini karena kesalahan, saya minta maaf.
N0rbert