iTerm2 3.0.15
OS X 10.11.6

I tried recently to configure my terminal, after a clean install. My problem is that when I do it, I get a weird error message. I go in my .bash directory; In it, I have several configuration files, named as follows: aliases, bash_profile, exports, extras, functions, inputrc, path and prompt.

When I do:

source bash_profile

I get this error message:

-bash: book: command not found

I get exactly the same error message with every configuration file.

I have 2 problems:

  1. my bash_profile file isn't sourced, as any other configuration file I try

  2. I'm pretty sure it's fundamental to configure my terminal but I don't understand what the error message really means. I get that there is an issue with that book command but I can't get any valuable info about it.

Things I tried:

  • Terminal commands: man book, book --help, or help book told me the book command doesn't exist or doesn't have a manual entry. Only info book gave me a result but it looks like it's more related to the info command than the book command. And no mention of any book in my configuration files too.

  • Google search "bash: book: command not found" doesn't return much, of course lots of "command not found" but the only reference to book is a post on the Github repo of Bash-it. Most of the answers about command not found are about the PATH environment variable, but even if I input my path manually, like this (I hope this is the correct way):

    export PATH=~/.rbenv/shims:/usr/local/Cellar:/usr/local/bin:/usr/local/sbin:/usr/local/bin/flake8:/usr/local/bin/git:/usr/bin:/bin:/usr/sbin:/sbin

    After that, when I try again a source bash_profile, I get the same result -bash: book: command not found.

  • Terminal.app has the same issue.

my bash_profile file:


# B A S H _ P R O F I L E


# Load .bashrc if it exists
test -f ~/.bashrc && source ~/.bashrc

# Load the shell dotfiles, and then some:
# * ~/.path can be used to extend `$PATH`.
# * ~/.extra can be used for other settings you don’t want to commit.
for file in ~/.bash/{path,prompt,exports,aliases,functions,extra,inputrc}; do
    [ -r "$file" ] && [ -f "$file" ] && source "$file";
unset file;

# Enable iTerm 2 Shell Integration
source ~/.iterm2_shell_integration.`basename $SHELL`

# Case-insensitive globbing (used in pathname expansion)
shopt -s nocaseglob;

# Append to the Bash history file, rather than overwriting it
shopt -s histappend;

# Autocorrect typos in path names when using `cd`
shopt -s cdspell;

# Do not autocomplete when accidentally pressing Tab on an empty line.
shopt -s no_empty_cmd_completion

# Enable tab completion for `g` by marking it as an alias for `git`
if type _git &> /dev/null && [ -f /usr/local/etc/bash_completion.d/git-completion.bash ]; then
    complete -o default -o nospace -F _git g;

# Add tab completion for many Bash commands
#if which brew > /dev/null && [ -f "$(brew --prefix)/share/bash-completion/#bash_completion" ]; then
#   source "$(brew --prefix)/share/bash-completion/bash_completion";
#elif [ -f /etc/bash_completion ]; then
#    source /etc/bash_completion;

# Thanks to @tmoitie, adds more tab completion for bash,
# also when hitting tab twice it will show a list.
#if [ -f $(brew --prefix)/etc/bash_completion ]; then
#    . $(brew --prefix)/etc/bash_completion

# R U B Y
# Ensure rbenv will be used first
# eval "$(rbenv init -)"
# test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash" 

1 Answer 1


I finally installed Bash 4.4.19 via Homebrew and edited iTerm preferences to use it. I renamed my configuration files by adding a dot before the name, and to my atonishment it worked, i.e. when I manually sourced my condiguration files iTerm reflected the changes.

I don't know if I would have obtained the same results by directly rename my files or if the change induced by the new version of Bash is the reason it finally worked. I don't know bash very well, but I suppose there is a default configuration that was somehow messed up, and using a fresh install of a new version with its own default configuration has done just enough to work.

After some use, I realized iTerm wouldn't automatically load the .bash_profile file at launch. Fortunatly, I found a solution: in the preferences of the app where you can specify where to find the executable, you can add a command to execute at launch. source ~/.bash_profile will do the work until I find a better fix.

You must log in to answer this question.

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