iTerm2 3.0.15
OS X 10.11.6
我最近尝试在全新安装后配置我的终端。我的问题是,当我这样做时,我收到一条奇怪的错误消息。我进入我的 .bash 目录;在其中,我有几个配置文件,名称如下:别名、bash_profile、exports、extras、函数、inputrc、路径和提示。
当我做:
source bash_profile
我收到此错误信息:
-bash: book: command not found
每个配置文件我都会收到完全相同的错误消息。
我有两个问题:
我的 bash_profile 文件没有来源,就像我尝试的任何其他配置文件一样
我很确定配置我的终端是至关重要的,但我不明白错误消息的真正含义。我知道该命令存在问题,
book
但我无法获得有关它的任何有价值的信息。
我尝试过的事情:
终端命令:
man book
、、book --help
或help book
告诉我book
命令不存在或没有手动输入。只info book
给了我一个结果,但它看起来与命令的关系info
比与book
命令本身的关系更密切。而且在我的配置文件中也没有提到任何内容book
。谷歌搜索“bash: book: command not found”没有返回太多结果,当然有很多“command not found”,但唯一参考的
book
是 Bash-it 的 Github repo 上的一篇文章。关于 command not found 的大多数答案都与 PATH 环境变量有关,但即使我手动输入路径,也像这样(我希望这是正确的方法):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
此后,当我再次尝试时
source bash_profile
,我得到了相同的结果-bash: book: command not found
。Terminal.app 有同样的问题。
我的 bash_profile 文件:
#--------------------------------------------------------------------------#
# 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";
done;
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;
fi;
# 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;
#fi;
# 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
#fi
# 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
我最终通过 Homebrew 安装了 Bash 4.4.19,并编辑了 iTerm 首选项以使用它。我通过在名称前添加一个点来重命名我的配置文件,令我惊讶的是,它起作用了,也就是说,当我手动获取我的配置文件时,iTerm 反映了这些变化。
我不知道我是否可以通过直接重命名文件获得相同的结果,或者新版本 Bash 引起的变化是否是它最终起作用的原因。我不太了解 bash,但我想有一个默认配置不知何故被搞乱了,并且使用新版本的全新安装及其自己的默认配置已经足够工作了。
经过一段时间的使用,我意识到 iTerm 不会在启动时自动加载 .bash_profile 文件。幸运的是,我找到了一个解决方案:在应用程序的首选项中,您可以指定可执行文件的位置,您可以添加在启动时执行的命令。我source ~/.bash_profile
会一直这样做,直到找到更好的解决方案。