Чому BASH надрукував “bash: cd: помилка запису: успіх”?


12

Сьогодні я це кілька разів помічав. Якщо я введіть cd ../Directoryдля зміни в інший каталог, він надрукує "bash: cd: error 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?
тердон

Яку точну версію bash (in $BASH_VERSION) ти працюєш?
Гейб

Я маю bash 4.2.37(1).
Село

Відповіді:


6

Може, помилка?

Це звучить як потенційна помилка. Я знайшов аналогічний звіт із таким же повідомленням. Помилка помилки : pwd вбудований вихід із помилкою запису: Успіх .

витяг

Це повідомлення відображатиметься, якщо ferror (stdout) повернеться не нульовим. З якоїсь причини (можливо, виклик fflush () безпосередньо перед перевіркою), stdio викликає повернення ferror () до істини, не встановлюючи errno.

Це трапляється двічі поспіль? Вбудований pwd викликає чіткіше () після друку повідомлення про помилку, тому навіть якщо прапор помилки 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

У /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.


typeset -f, aliasі which cdвсі нічого не повертають, а інші файли містять лише PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Село

2
використанняtype -a cd
glenn jackman

1
type -a cdдрукує "CD - це вбудована оболонка".
Село
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.