为什么BASH打印“ bash:cd:写入错误:成功”?


12

我今天注意到了几次。如果我键入cd ../Directory要更改到另一个目录,它将显示“ bash:cd:写入错误:成功”。我无法确定其他哪些先前命令可能与此相关。

  • typeset -f 什么都不打印。
  • alias 什么都不打印。
  • type -a cd 打印“ cd是内置的shell”。
  • echo $CDPATH 打印一个空行。
  • $BASH_VERSION 打印“ bash:4.2.37(1)-发行版:找不到命令”。
  • 我只注意到了2-3次。在两种情况下,初始目录和目标目录相同。我以其他方式多次更改了目录,但始终没有遇到错误。

是什么原因造成的?


type -a cd根据Glenn的要求添加输出。
terdon

请将type命令的输出添加到您的问题中。此外,这是否会在所有目录中发生,或者仅在您位于特定目录中时才发生?的输出是echo $CDPATH什么?
terdon

$BASH_VERSION您正在运行什么确切的bash版本?
加布2014年

我有bash 4.2.37(1)

Answers:


6

也许是个错误?

这听起来像一个潜在的错误。我发现类似的报告显示了相同的消息。错误bash:pwd内置退出,并显示写入错误:Success

摘抄

如果ferror(stdout)返回非零,则将显示此消息。由于某种原因(可能是检查之前的fflush()调用),stdio导致ferror()返回true而不设置errno。

这会连续发生两次吗?pwd内置函数在输出错误消息后会调用clearerr(),因此即使stdout错误标志“ sticks”也应将其清除。

无法更新历史记录?

错误让我觉得它是成功的改变目录,但无法将命令写入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-也许,但是每次在shell中运行命令时,它都应该在历史记录文件上锁定并在完成后释放它,其他所有执行相同操作的进程都将等待。
slm

bash ~/.bash_history在运行命令后不会立即写入,但是在会话关闭后,对吗?
SOFe

@Pemapmodder-正确,对我来说,尚不清楚OP是否已执行以下操作: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 -faliaswhich cd均不返回任何内容,其他文件仅包含PATH=~/.context/tex/texmf-linux/bin/:$PATH

2
使用type -a cd
glenn jackman 2014年

1
type -a cd打印“ cd是内置的shell”。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.