It depends on what you set as your default (login-)shell for the system, for Terminal, for iTerm. Updated
bash installed and set to execute in one of them gives differing results.
This error comes from a so called dot-file you installed. These are files with a dot in front (hence the name) like
.bashrc. That means they are invisible to the Finder and to a simple
The dot-files in question are read by your shell when it starts up. They contain instructions, settings, customisations; maybe little snippets of program code.
Not all dot-files in your users home directory are read by the shell.
Those read by bash may include:
.profile (This list is not exhaustive)
Those files may have been created by you, manipulated by you or by certain programs like fink, homebrew or ports.
You may have just copied those from the net to "upgrade"/personalize your shell.
Regardless of how you arrived at the current situation. Open your Terminal/iTerm from another user and the symptoms will probably not be observed.
That means: all those files are in a sense 'safe to delete': in the sense that they are not essential for running your Terminal or your shell. Make a backup of those in case they indeed contain personalised settings you may depend on in your daily work. Examples for that include additions to your
$PATH variables. Without those you may find programs like fink no longer working.
However the actual error message you posted indicates two things:
The combined content of your dot-files did not work to accomplish what they were supposed to do. More exact: an instruction (compdef) was called and that is not available.
That you very probably sourced a bunch of dot-files from a source on the net like holman-dotfiles.
These included a bug that had the exact same error message.
So you should look through all of the dot-files for your current user and keep only the stuff you recognise as necessary (remember the backups). Then you might use the updated files from your source again. But keep in mind that these are quite 'comprehensive'. It would be prudent to not use them all blindly and actually test and pick a subset of all those options.
Using them all blindly or indiscriminately may not only lead to issues like the one prompting this question but also when following other how-tos or troubleshooting advice.
This answer was given to a previous version of the question that did not indicate zsh as the shell used. -> Substitute zsh where you read bash above.