Почему BASH напечатал «bash: cd: write error: Success»?

12

Я заметил это несколько раз сегодня. Если я печатаю, cd ../Directoryчтобы перейти в другой каталог, выдается «bash: cd: write error: Success». Я не могу определить, какие другие предыдущие команды могут быть связаны с этим.

  • typeset -f ничего не печатает.
  • alias ничего не печатает.
  • type -a cd печатает "CD это встроенная оболочка".
  • echo $CDPATH печатает пустую строку
  • $BASH_VERSION выводит "bash: 4.2.37 (1) -release: команда не найдена".
  • Я заметил это только 2-3 раза. Начальный каталог и целевой каталог были идентичны в обеих ситуациях. Я изменял каталоги таким образом много раз, но не всегда сталкивался с ошибкой.

Что может быть причиной этого?

Поселок
источник
Пожалуйста, добавьте вывод, type -a cdкак запросил Гленн.
Terdon
Пожалуйста, добавьте вывод typeкоманды к вашему вопросу. Кроме того, это происходит во всех каталогах или только если вы находитесь в определенном (ых) каталоге (ах)? И какой выход echo $CDPATH?
Terdon
Какую именно версию bash (in $BASH_VERSION) вы используете?
Гейб
У меня есть bash 4.2.37(1).
Деревня

Ответы:

6

Может быть, ошибка?

Это звучит как потенциальная ошибка. Я нашел похожий отчет с тем же сообщением. Ошибка bash: встроенная программа pwd завершается с ошибкой записи: Success .

выдержка

Это сообщение будет отображаться, если ferror (stdout) возвращает ненулевое значение. По какой-то причине (возможно, вызов fflush (), непосредственно предшествующий проверке), stdio заставляет ferror () возвращать true, не устанавливая errno.

Это происходит два раза подряд? Встроенная функция pwd вызывает clearerr () после печати сообщения об ошибке, поэтому, даже если флаг ошибки stdout «залипает», это должно его очистить.

Не можете обновить историю?

Ошибка заставляет меня думать, что она успешно сменила каталоги, но не смогла написать команду cd ../Directoryдля вас $HOME/.bash_history. Я бы подтвердил, что этот файл не поврежден и доступен для записи. Также убедитесь, что ваш $HOMEкаталог доступен для записи и не заполнен.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home
SLM
источник
/homeРаздел имеет много свободного пространства. Я не могу найти ничего странного в ".bash_history", он настроен на чтение и запись только для владельца. Всякий раз, когда я покидаю терминал, данные с этого терминала все еще отправляются туда. Возможно ли это, потому что я запускал несколько окон терминала одновременно?
Деревня
@Village - возможно, но каждый раз, когда команда запускается в оболочке, она должна блокировать файл истории и освобождать, когда это будет сделано, любой другой процесс, выполняющий то же самое, просто будет ждать.
SLM
bash не пишет ~/.bash_historyсразу после запуска команды, но после закрытия сессии, верно?
SOFe
@Pemapmodder - правильно, мне было неясно, сделал ли ОП что-то вроде этого: askubuntu.com/questions/67283/… .
SLM
Я столкнулся с той же проблемой, и я совершенно уверен, что это не так (потому что я был su rootв то время, и я мгновенно tail /root/.bash_historyи не увидел ничего уместного, затем, exitчтобы вернуться к моему обычному пользователю, а затем sudo tail /root/.bash_historyи строку (обе строки, так как я повторил cd) было действительно написано.
SOFe
3

Ваша команда cd является либо псевдонимом, либо, скорее всего, функцией bash.

typeset -f  # displays functions
alias       # display aliases

Если эти команды не найдены which cd, найдите путь к cdкоманде.

Посмотрите на cdпсевдоним или функции определения в нормальных сценариев запуска .bash_profile, .bashrcи .profile.

suspectus
источник
typeset -f, aliasИ which cdвсе возвращается ничего, а другие только файлы не содержат PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Деревня
2
использованиеtype -a cd
Гленн Джекман
1
type -a cdпечатает "CD это встроенная оболочка".
Деревня