sh: 0: getcwd () завершилась неудачно: такого файла или каталога на указанном диске нет

213

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

Все работает нормально, когда я помещаю код в локальный каталог.

Но когда я помещаю код в цитируемую директорию монтирования, появляется ошибка:

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

Вот моя настройка в 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

Что здесь происходит? Что может вызвать эту ошибку?

CrazyKitty Ротоши
источник
Я пытаюсь в Ubuntu 10.10, он работает нормально с той же конфигурации.
CrazyKitty Rotoshi
50
Это сообщение об ошибке может быть вызвано при попытке выполнить команду из несуществующего пути (например, если процесс B удаляет папку, в которой в данный момент находится процесс A). Пример из реальной жизни: в терминале A: mkdir ~/myfunnydir && cd ~/myfunnydirв терминале B: rm -rf ~/myfunnydirи , наконец , обратно в терминал а еще: java --version)
дБмВт
Ваш каталог монтируется автоматически, но учетные данные хранятся в /root. Обычный пользователь не сможет смонтировать его, потому что учетные данные не будут доступны для чтения им. Попробуйте сделать это как неавтоматическое монтирование и позвольте root монтировать его.
alvits

Ответы:

566

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

Попробуйте изменить каталог и повторите команду.

Hooman
источник
4
getcwdполучает текущий рабочий каталог, и если каталог будет удален или перемещен, он будет недоволен! Смотрите руководство Linux для getcwd
Hooman
2
Возможно, вам даже придется это сделать, если вы удалили каталог, в котором находились, и создали его в том же месте с тем же именем.
Джексон,
точно верно! отлично!
Фархад Гударзи
1
все, что я сделал, это нажал на cd и снова запустил команду, и это сработало, спасибо!
FreeSoftwareServers
Заметил это сам при запуске apt-get upgrade из несуществующего каталога. Сообщение спамится около 20 раз, затем обновление продолжается, как будто ничего не произошло. Я надеялся найти больше информации о том, почему apt-get даже заботится о том, в какой папке я нахожусь, особенно так настойчиво и без особых последствий.
Даррен Рингер
12

Попробуйте следующую команду, у меня это сработало.

cd; cd -
timxor
источник
Что это? Что это значит?
Дил сюрючу
cd;как правило, приведет вас в домашний каталог и cd -вернет вас в каталог, в котором вы находились непосредственно перед текущим каталогом. В общем, вы идете в домашний каталог и возвращаетесь. Однако, если исходный каталог, в котором вы были, удален, это не сработает.
Хуман
8

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

cd .
Роберто Родригес
источник
6

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

cd $(pwd)
smcjones
источник
4

В Ubuntu 16.04.3 LTS у меня работает следующая команда:

exit

Тогда я снова авторизируюсь.

Ма
источник
2
на самом деле было бы достаточно переключиться на существующий каталог, как Хуман уже сказал в своем ответе
derHugo
2

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

Aritrik
источник
1
Это то, что Хуман уже сказал в своем ответе
derHugo
0

В моем случае ничего выше не сработало. После того, как я некоторое время ударился головой о стену, я обнаружил, что уничтожил /etc/passwdзаписи, запустив специальный скрипт linux-server-setup-bash-script, который хорошо работал ранее, но на этот раз в регулярном выражении команда «sed» стерла все существующие записи: D После копирования и вставки записей по умолчанию с другого работающего сервера Linux, я наконец смог перезапустить sshd.

Так что не забудьте сделать резервную копию исходного /etc/passwdфайла, прежде чем применять к нему любые регулярные выражения :)

Tech Nomad
источник
-8

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

sudo shutdown -r now
Юнуса
источник
4
на самом деле было бы достаточно переключиться на существующий каталог, как Хуман уже сказал в своем ответе давным-давно ...
derHugo