iTerm2:当我尝试获取配置文件时出现奇怪的错误消息

iTerm2:当我尝试获取配置文件时出现奇怪的错误消息

iTerm2 3.0.15
OS X 10.11.6

我最近尝试在全新安装后配置我的终端。我的问题是,当我这样做时,我收到一条奇怪的错误消息。我进入我的 .bash 目录;在其中,我有几个配置文件,名称如下:别名、bash_profile、exports、extras、函数、inputrc、路径和提示。

当我做:

source bash_profile

我收到此错误信息:

-bash: book: command not found

每个配置文件我都会收到完全相同的错误消息。

我有两个问题:

  1. 我的 bash_profile 文件没有来源,就像我尝试的任何其他配置文件一样

  2. 我很确定配置我的终端是至关重要的,但我不明白错误消息的真正含义。我知道该命令存在问题,book但我无法获得有关它的任何有价值的信息。

我尝试过的事情:

  • 终端命令:man book、、book --helphelp 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会一直这样做,直到找到更好的解决方案。

相关内容