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


11

Я пытаюсь скомпилировать код 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

Что может вызвать эту ошибку?


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

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

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

Эта ошибка затрагивает jshint. Создайте каталог foo, перейдите в него, создайте файл с именемmyjavascript.js

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

Jshint работает правильно, он говорит, что нет ошибок, которые являются правильными.

Откройте 2-й терминал и 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 Это не новый вопрос, это, очевидно, попытка ответить и предоставить ИМХО правильное (хотя, безусловно, не оптимальное) решение.
Byte Commander

@ByteCommander Я нажал на это по ошибке, извините.
Норберт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.