sh: 0: getcwd () не вдалося: Немає такого файлу чи каталогу


11

Я намагаюся скомпілювати код ARM в Ubuntu 12.04.

Все добре працює, коли я кладу свій код у локальний каталог. Але коли я поміщаю код у цитований каталог mount, трапляється така помилка:

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

Ось моя команда mount:

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

Я використовую Ubuntu 12.04 64bit

Що б викликало цю помилку?


1
Ваша робоча директорія вже не існує. Введіть cd [PATH]свою оболонку, щоб перейти до існуючої.
Девід Фоерстер

Також дивіться тут: stackoverflow.com/a/21593371/7111561
derHugo

Відповіді:


7

Я отримав цю помилку, використовуючи jshint через підпроцес python на Ubuntu 12.10 64 біт.

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

Це викликано тим, що ви видалили або перемістили каталог із-під нього, і поточний каталог не можна визначити.

Як сказати, чи є у вас проблема:

Виконайте команду cd . (Якщо ви отримаєте цю помилку, то у вас є ця проблема).

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

Ви намагалися змінити каталог у свій поточний dir, але не змогли.

Як відтворити помилку:

jshint впливає на цю помилку. Створіть каталог foo, введіть його в CD, зробіть файл з назвоюmyjavascript.js

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

jshint працює правильно, він говорить про відсутність помилок, які є правильними.

Відкрийте другий термінал, а rm -rfкаталог /home/el/fooзнизу.

rm -rf /home/el/foo

Запустіть jshint myjavascript.jsще раз свій перший термінал, і ви отримаєте помилку:

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

Директорія пішла! І навіть якщо ви замінили його тим самим вмістом, він має іншу підпис і термінал не може відновитись, метод getcwdне може знати, що таке поточний каталог.

Три рішення:

Термінал плутається з приводу того, що поточний каталог, тому що його пішов або змінився підпис. Виконайте одне із них, щоб виправити це:

  1. Запускайте команду, cd ..поки ви не перестанете отримувати помилки. Це повторно синхронізує термінал з файловою системою. Потім поверніть компакт-диск назад у свій каталог. Спробуйте ще раз. Помилка усувається.

  2. Використовуйте su youruserв терміналі, введіть пароль. Це освіжає і повертає вас до тієї ж директорії.

  3. Закрийте та знову відкрийте термінал, який вимиває застарілі підписи каталогів. Або надішліть неприємну пошту будь-якій програмі (jshint) або тисячам інших програм, які не переносять або не відновляються після усталених підписів каталогів.


замість того, щоб бігати cd .."досить часто", ви могли також просто cd ~безпосередньо до своєї домашньої папки
derHugo

4

Я отримую ту ж помилку, але я намагався запустити сценарій у своєму домашньому каталозі. Я вирішив це за допомогою:

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

Це переміщує мене до мого домашнього каталогу, потім запускає pwd (але ви можете запустити все, що завгодно), а потім popd переміщує мене туди, де я був. Якщо вам не потрібно рухатися назад

cd; pwd

Було б достатньо, щоб вирішити мою проблему, (я сподіваюся, що це допоможе вам.)

правити Ці 1>/dev/nullчастини НЕ є обов'язковими; Я додаю їх, щоб я міг використовувати вищезазначений рядок у сценарії оболонки без додаткового виводу, який не потрібен у цьому випадку.


Так що я можу передати це в сценарій bash, а не в кінцевому підсумку з результатами, які я не хочу. Я намагаюся додати якнайповнішу відповідь, бо можу, тому що, коли я знаходжу командний рядок-фу, мені легко скоротити його до моїх потреб, і я очікую, що хтось, хто використовує це, трохи схожий на мене.
Алекс Рош

Ок, я додав редагування, пояснюючи, (хоча деякі можуть відчути, що я вчу їх смоктати яйця - ті, хто знає, не потрібно редагувати, а ті, хто не знає, можуть вирізати-вставити, або шукати це функція, яка не пов'язана безпосередньо з початковим питанням.)
Alexx Roche

Сумно так :(
Брайам

-1

Навіть у мене були ті ж проблеми з python virtualenv. Це було виправлено простим перезапуском

sudo shutdown -r now

2
Я не думаю, що вам потрібно буде перезапустити, щоб виправити це, просто дотримуйтесь інших відповідей тут і cdдо існуючого каталогу.
wjandrea

Якщо у вас є нове запитання, будь ласка, задайте його, натиснувши кнопку Задати питання . Додайте посилання на це питання, якщо це допомагає надати контекст. - З огляду
N0rbert

1
@ N0rbert Це не нове запитання, це очевидно спроба відповіді та надання дійсного (хоча, безумовно, не оптимального) рішення IMHO.
Байт-командир

@ByteCommander Я натиснув це помилково, вибачте.
N0rbert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.