sh: 0: getcwd () не удалось: нет такого файла или каталога

Я пытаюсь скомпилировать код ARM в Ubuntu 12.04.

Все работает нормально, когда я помещаю свой код в локальный каталог. Но когда я помещаю код в указанный каталог монтирования, возникает эта ошибка:

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

Вот моя команда монтирования:

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

Что вызвало бы эту ошибку?

11
задан 8 May 2018 в 21:17

3 ответа

Я получил эту ошибку, используя jshint через подпроцесс python в 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

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

Как узнать, если у вас возникла эта проблема:

Запустите команду cd . (Если вы получили эту ошибку, у вас есть эта проблема).

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

Вы пытались изменить каталог на текущий каталог, но не смогли.

Как воспроизвести ошибку:

jshint подвержен этой ошибке. Создайте каталог foo, перейдите в него, создайте файл с именем 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) или тысячам других программ, которые не могут переносить устаревшие подписи каталогов или восстанавливаться после них.

  4. [+1121]
0
ответ дан 8 May 2018 в 21:17

Даже у меня была такая же проблема с python virtualenv. Это было исправлено простым перезапуском

sudo shutdown -r now
0
ответ дан 8 May 2018 в 21:17

Я получаю ту же ошибку, но я пытался запустить скрипт в моем домашнем каталоге. Я решил это с помощью:

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

Это переместит мой в мой домашний каталог, затем запустит pwd (но вы можете запустить все что угодно) и затем popd вернет меня туда Я был. Если вам не нужно возвращаться назад, тогда

cd; pwd

будет достаточно для решения моей проблемы (надеюсь, это поможет вам.)

[ 119] править 1>/dev/null части необязательны; Я добавляю их, чтобы использовать вышеуказанную строку в сценарии оболочки без дополнительного вывода, которое в этом случае не требуется.

0
ответ дан 8 May 2018 в 21:17