sh: 0: getcwd () gagal: Tidak ada file atau direktori pada drive yang dikutip

213

Saya mencoba mengkompilasi kode ARM di Ubuntu 12.

Semuanya berfungsi dengan baik ketika saya meletakkan kode di direktori lokal.

Tetapi ketika saya memasukkan kode tersebut ke dalam direktori mount error error muncul:

making testXmlFiles
sh: 0: getcwd() failed: No such file or directory
ARM Compiling xxxxx.c
sh: 0: getcwd() failed: No such file or directory

Ini pengaturan saya di fstab

//10.0.0.1/data /mnt/data   cifs    auto,noserverino,credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm 0 0

Apa yang terjadi disini? Apa yang bisa menyebabkan kesalahan ini?

CrazyKitty Rotoshi
sumber
Saya coba di Ubuntu 10.10 berfungsi dengan baik dengan konfigurasi yang sama.
CrazyKitty Rotoshi
50
Pesan kesalahan ini mungkin dipicu ketika mencoba mengeksekusi perintah dari jalur yang tidak ada (misalnya jika proses B menghapus folder yang memproses A saat ini berada di. Contoh nyata: di terminal A: mkdir ~/myfunnydir && cd ~/myfunnydirdi terminal B: rm -rf ~/myfunnydirdan akhirnya kembali terminal A lagi: java --version)
dbm
Direktori Anda dipasang secara otomatis tetapi kredensial disimpan di /root. Pengguna biasa tidak akan bisa memasangnya karena kredensial tidak akan dapat dibaca oleh mereka. Cobalah menjadikannya sebagai pemasangan non-otomatis dan biarkan root memasangnya.
alvits

Jawaban:

565

Kesalahan ini biasanya disebabkan oleh menjalankan perintah dari direktori yang tidak ada lagi.

Coba ubah direktori Anda dan jalankan kembali perintahnya.

Hooman
sumber
4
getcwdmendapatkan direktori aktif saat ini dan jika direktori dihapus atau dipindahkan itu akan tidak bahagia! Lihat Linux Manual untuk getcwd
Hooman
2
Anda bahkan mungkin harus melakukan ini jika Anda telah menghapus direktori tempat Anda berada dan membuatnya kembali di tempat yang sama dengan nama yang sama.
Jackson
benar benar! bagus!
farhad goodarzi
1
semua yang saya lakukan adalah menekan cd, dan menjalankan kembali perintah, dan itu berhasil, terima kasih!
FreeSoftwareServers
Melihat ini sendiri ketika menjalankan pembaruan apt-get dari direktori yang tidak ada. Pesan spam sekitar 20 kali kemudian pembaruan berlanjut seolah-olah tidak ada yang terjadi. Saya berharap untuk menemukan informasi lebih lanjut tentang mengapa apt-get bahkan peduli apa folder saya, terutama sangat bersikeras dengan konsekuensi yang sangat sedikit.
Darren Ringer
12

Coba perintah berikut ini, itu berhasil untuk saya.

cd; cd -
timxor
sumber
apa ini? apa artinya?
dılo sürücü
cd;biasanya akan membawa Anda ke direktori home dan cd -membawa Anda kembali ke direktori tempat Anda berada tepat sebelum direktori saat ini. Jadi pada dasarnya Anda pergi ke direktori home dan kembali. Namun, jika direktori asli tempat Anda berada dihapus, ini tidak akan berfungsi.
Hooman
8

Itu juga terjadi pada saya pada direktori yang dibuat ulang, direktori itu sama tetapi untuk membuatnya berfungsi lagi jalankan:

cd .
Roberto Rodriguez
sumber
6

Ini bisa terjadi dengan symlinks kadang-kadang. Jika Anda mengalami masalah ini dan Anda tahu Anda berada di direktori yang ada, tetapi symlink Anda mungkin telah berubah, Anda dapat menggunakan perintah ini:

cd $(pwd)
smcjones
sumber
4

Di Ubuntu 16.04.3 LTS, perintah selanjutnya berfungsi untuk saya:

exit

Lalu saya sudah login lagi.

Apakah Ma
sumber
2
sebenarnya itu sudah cukup untuk beralih ke direktori yang ada seperti yang sudah dikatakan Hooman dalam jawabannya
derHugo
2

Silakan periksa jalur direktori apakah ada atau tidak. Kesalahan ini muncul jika folder tidak ada dari tempat Anda menjalankan perintah. Mungkin Anda telah menjalankan perintah hapus dari jalur yang sama di baris perintah.

Aritrik
sumber
1
Itulah yang sudah dikatakan Hooman dalam jawabannya
derHugo
0

Dalam kasus saya tidak ada yang berhasil. Setelah membenturkan kepala saya ke dinding untuk sementara waktu saya telah menemukan, bahwa saya telah menghancurkan /etc/passwdentri dengan menjalankan script-linux-server-setup-bash-custom yang bekerja dengan baik sebelumnya, tapi kali ini regex dalam perintah "sed" menghapus semua entri yang ada: D Setelah menyalin menempelkan entri default dari server linux lain yang bekerja saya akhirnya bisa memulai kembali sshd.

Jadi jangan lupa untuk membuat cadangan /etc/passwdfile asli sebelum menerapkan penggantian regex di atasnya :)

Tek Nomad
sumber
-8

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

sudo shutdown -r now
Yunus
sumber
4
sebenarnya itu sudah cukup untuk beralih ke direktori yang ada karena Hooman sudah mengatakan dalam jawabannya sejak lama ...
derHugo