
iTerm2 3.0.15
OS X 10.11.6
Недавно я пытался настроить свой терминал после чистой установки. Проблема в том, что когда я это делаю, я получаю странное сообщение об ошибке. Я захожу в свой каталог .bash; В нем у меня есть несколько файлов конфигурации, названных следующим образом: aliases, bash_profile, exports, extras, functions, inputrc, path и prompt.
Когда я делаю:
source bash_profile
Я получаю следующее сообщение об ошибке:
-bash: book: command not found
Я получаю одно и то же сообщение об ошибке с каждым файлом конфигурации.
У меня 2 проблемы:
мой файл bash_profile не является исходным, как и любой другой файл конфигурации, который я пытаюсь
Я почти уверен, что это фундаментально для настройки моего терминала, но я не понимаю, что на самом деле означает сообщение об ошибке. Я понимаю, что есть проблема с этой
book
командой, но я не могу получить никакой ценной информации об этом.
Что я пробовал:
Команды терминала:
man book
,book --help
, илиhelp book
сказали мне, чтоbook
команда не существует или не имеет ручного ввода. Толькоinfo book
дали мне результат, но похоже, что он больше связан с командой,info
чем сbook
командой. И никаких упоминаний об этомbook
в моих файлах конфигурации тоже.Поиск в Google "bash: book: command not found" не возвращает много, конечно, много "command not found", но единственная ссылка
book
- это пост в репозитории Github Bash-it. Большинство ответов о 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
Я наконец установил Bash 4.4.19 через Homebrew и отредактировал настройки iTerm, чтобы использовать его. Я переименовал свои файлы конфигурации, добавив точку перед именем, и к моему удивлению это сработало, т. е. когда я вручную указал свои файлы конфигурации, iTerm отразил изменения.
Я не знаю, получил бы я те же результаты, если бы напрямую переименовал свои файлы, или же изменения, вызванные новой версией Bash, стали причиной того, что это наконец заработало. Я не очень хорошо знаю bash, но предполагаю, что есть конфигурация по умолчанию, которая каким-то образом была испорчена, и использование новой установки новой версии с еесобственныйКонфигурация по умолчанию сделала достаточно для работы.
После некоторого использования я понял, что iTerm не будет автоматически загружать файл .bash_profile при запуске. К счастью, я нашел решение: в настройках приложения, где можно указать, где найти исполняемый файл, можно добавить команду для выполнения при запуске. source ~/.bash_profile
будет выполнять работу, пока я не найду лучшее решение.