1

I opened my terminal, like I do most days Mon-Fri, and was surprised to see this error:

Last login: Fri Jul 27 17:19:25 on console
-bash: echo: write error: Broken pipe
SomeMac:~ user568458$ 

Everything seems to work fine currently, but things like this worry me because they could be a clue that something is wrong which might blow up later.

Doing some searches suggests that this message can appear if someone introduces an error into .bash_profile - but I haven't modified that file in a long time and haven't installed anything that would modify it recently. In fact, my .bash_profile file reports its "Modified" date as February (5 months ago).

How can I investigate what caused this or how serious it is? Or is it something that can be safely ignored?


In case it's relevant, since that other linked Q&A mentions .bash_profile commands related to NVM (which I do use), here's the contents of my .bash_profile file:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

But this doesn't include the infinite-loop causing line source ~/.bash_profile in that other guy's answer, and these have (as far as I can) not changed since February, so I'm not sure how they could be the cause of the error.

  • You should take a look at .nvm/nvm.sh and .nvm/bash_completion, as both of t hem are loaded by your bash profile. If you can't find anything wrong there, append them to your original question (if they aren't too big) so others can take a look. – Bernard Wei Jul 30 '18 at 17:48
2

A shell's error message is really straight forward. The structure consists of the command, the filename, and the error message.

command: filename: message

Your error message is a bit more complicated in the fact that you are using a shell builtin command and the filename is a stream through a pipe. So, my best guess would be that somewhere in nvm.sh, there is a line that is something like echo something | command, where command is closing the pipe before echo finishes sending the data.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .