Интеграция оболочки iTerm2 и конфликты Oh My Zsh
Недавно я установил iTerm2, и теперь у меня возникла интересная проблема после настройки интеграции iTerm Shell.
После открытия нового окна терминала все выглядит корректно, показывая правильную тему "agnoster" от Oh My ZSH:
![working]()
Если я выдаю clear
, теперь мое окно терминала выглядит следующим образом:
![не работает]()
Я могу вернуться к исходному состоянию с помощью поиска ~/.zshrc
еще раз, но мне действительно интересно узнать о проблеме с корнем и если есть способ исправить его.
Я попытался скрыть маркер в настройках iTerm, но это просто приводит к пустому терминалу.
В предыдущей установке (до того, как я уничтожил этот Mac), у меня была Oh My ZSH и Shell Integration, и, хотя временами это выглядело как-то странно, все же, похоже, она сохраняла тему Oh My ZSH независимо от того, терминала или выдачи любой другой команды.
Есть ли у кого-нибудь идеи по этому поводу? Я проверял настройки iTerm снова и снова, но не могу найти ничего, что было бы связано.
Ответы
Ответ 1
Я только что установил Интеграцию Shell в iTerm 2 (Build 2.9.20160313) и имел ту же самую проблему.
То, как я решил это, было добавление единственной строки в ~/.iterm2_shell_integration.zsh
сразу после export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
в строке 3:
ITERM2_PRECMD_PS1="$PS1"
Таким образом, выглядит глава вышеупомянутого файла:
if [[ -o login ]]; then
if [ "$TERM" != "screen" -a "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" ]; then
export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
## BEGIN EDIT
ITERM2_PRECMD_PS1="$PS1"
## END EDIT
# Indicates start of command output. Runs just before command executes.
iterm2_before_cmd_executes() {
printf "\033]133;C;\007"
}
# ...
Вероятно, это ошибка, поскольку (как вы можете видеть из комментариев в том же файле) script должен сохранить ваш $PS1
при входе в систему, но это не так.
Ответ 2
Поздний ответ, но это сработало для меня.
На странице iTerm2 Shell Integrations вы загрузите установку script и переместите ее в bash.
Вместо загрузите его локально и измените, чтобы он знал, что вы используете ZSH.
Сначала загрузите script
wget https://iterm2.com/misc/install_shell_integration.sh
Затем вместо того, чтобы script определить оболочку, просто определите ее как "zsh"
# comment out this line
# SHELL=$(echo "${SHELL}" | tr / "\n" | tail -1)
# replace it with this line
SHELL="zsh"
Затем создайте исполняемый файл install script, а затем запустите его
chmod +x install_shell_integration.sh
./install_shell_integration.sh
После этого интеграция должна быть правильно установлена.
Примечание
Удалите интеграцию Bash, если она вам не нужна.
rm ~/.iterm2_shell_integration.bash