%2C%20%D0%BD%D0%B5%20%D1%83%D0%B4%D0%B0%D0%BB%D1%8F%D1%8F%20%D0%B5%D0%B3%D0%BE%3F.png)
Я пробовал новые среды разработки, включая zsh и oh-my-zsh. Теперь, когда я установил oh-my-zsh, он запускается по умолчанию на моих терминалах (iTerm2 и терминал), всегда запускается с zsh и с настройками из oh-my-zsh. Мне было интересно, можно ли "отключить" или прекратить использование zsh и его настройки с oh-my-zsh без необходимости удаления oh-my-zsh? Также было бы неплохо узнать, как включить их обратно.
В настоящее время мои терминалы автоматически переходят в zsh (я думаю) и автоматически используют oh-my-zsh. Я хочу иметь больше контроля над этим и иметь возможность контролировать и то, когда используется zsh, и когда используются функции oh-my-zsh.
Мне также интересно узнать, как терминальные приложения узнают, какую оболочку запустить при запуске. Было бы неплохо иметь возможность контролировать и это!
Если вы объясните как можно подробнее «почему» каждая команда, которую вы мне даете, это было бы полезно! :)
Я использую OS X. Не уверен, имеет ли это значение, но мне больше нравятся ответы, которые применимы к более общим средам Unix, а не к моей собственной.
решение1
Формулировка вашего вопроса неоднозначна, поэтому я не могу понять, имеете ли вы в виду, что хотите прекратить использование zsh
или хотите прекратить использование oh-my-zsh
. Я рассмотрю оба варианта.
Отключениеzsh
Просто запустите chsh
и выберите любую оболочку, которую вы использовали до этого. Если вы не знаете, какую оболочку вы использовали до этого, то это почти наверняка bash
. Эта команда изменяет "оболочку входа", связанную с вашим пользователем. По сути, она изменяет вашу оболочку по умолчанию.
Вам нужно будет открыть новое окно терминала, чтобы изменения вступили в силу. Если это не сработает, вам нужно будет выйти из системы и снова войти в нее, чтобы повторно инициализировать свою среду.
Только отключениеoh-my-zsh
- Проверьте,
~/.zshrc.pre-oh-my-zsh
существует ли он. Вероятно, он существует. (Этот файл был создан, когда скрипт установки удалилoh-my-zsh
ваш предыдущий . — это файл запуска , аналогичный файлу .).zshrc
.zshrc
zsh
.bashrc
bash
- Если это так, выполните
mv ~/.zshrc ~/.zshrc.oh-my-zsh
. Это уберет -createdoh-my-zsh
с.zshrc
пути, и мы сможем восстановить оригинал, выполнивmv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
. - Если его нет, откройте
~/.zshrc
в текстовом редакторе. Найдите строку, в которой написано ,source $ZSH/.oh-my-zsh
и либо закомментируйте ее, либо удалите. Это отключит инициализациюoh-my-zsh
.
Чтобы изменения вступили в силу, вам потребуется перезапустить оболочку.
решение2
Чтобы вручную установить новую оболочку по умолчанию, выполните chsh -s /my/ new/shell, например chsh -s /bin/bash. Затем просто переоткройте свои оболочки.
решение3
Так как это немного скрыто в ответе @Gilles, быстрый способ загрузки zsh без какой-либо конфигурации, например .zshrc .zshenv и т. д.
zsh -f
Это полезно, когда вы хотите проверить, не мешает ли что-либо в вашей конфигурации работе какой-либо функции zsh.
решение4
Вы можете указать zsh загружать файлы конфигурации для каждого пользователя из другого каталога, установив переменную окруженияZDOTDIR
перед запуском zsh.
Если вы хотите запустить zsh без загрузки файлов конфигурации, укажите ZDOTDIR
несуществующий каталог. Если вы хотите пропустить файлы конфигурации системы (кроме /etc/zshenv
), вы можете запустить zsh -f
. Если вы хотите пропустить файлы конфигурации системы, но запустить файлы пользователя, запустите zsh -d
.
Например, если вы хотите протестировать oh-my-zsh, не делая его по умолчанию, не помещайте .zshrc
from oh-my-zsh в свой домашний каталог. Вместо этого поместите его в другое место, например, в ~/.oh-my-zsh
, а затем запускайте ZDOTDIR=~/.oh-my-zsh zsh
, когда захотите использовать oh-my-zsh.
Терминальные приложения запускают оболочку, указанную SHELL
переменной окружения. Если эта переменная не установлена, они запускают оболочку входа, указанную в базе данных пользователей ( /etc/passwd
). Вы можете запросить другое приложение при запуске эмулятора терминала, например xterm -e fish
.