4

Итак, мне только что удалось установить zsh на компьютер, к которому у меня есть доступ по SSH (но, что важно, без доступа с правами root), как указано здесь. Затем я попытался установить Oh My Zsh, и меня приветствовало следующее сообщение:

Zsh is not installed! Please install zsh first!

Что было не так уж удивительно. После проверки скрипта установки код для проверки, установлен ли zsh:

CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
    printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
    exit
fi
unset CHECK_ZSH_INSTALLED

Поэтому без прав root я не могу редактировать /etc /shells. Также возможно важно отметить, что когда я подключаюсь по SSH к этой системе, я не обязательно подключаюсь к одной и той же физической машине; скорее я зашел на одну из нескольких машин, на которые скопирован мой домашний каталог. В настоящее время в моем .profile есть код, который добавляет ~/bin к моему $PATH и запускает zsh при входе в систему.

По сути, есть ли способ обойти это? Я предполагаю, что сценарий установки может быть изменен, чтобы приспособить zsh к ~/bin/zsh, но простое удаление логики проверки, безусловно, ничего не значит, если не опрометчиво.

1 ответ1

8

Логика проверки существует только для предотвращения сбоя chsh в конце установки. Если ваш двоичный файл zsh не указан в /etc/shells , вы не сможете использовать chsh для изменения оболочки входа в систему. В этом случае запуск ~/bin/zsh из одного из ваших текущих файлов запуска оболочек является единственным способом автоматического запуска zsh . Поскольку ~/.profile обычно используется только для сеансов входа в систему, все должно быть в порядке. Вы можете запустить zsh -l оттуда, чтобы получить сеанс входа в систему, а не просто интерактивный сеанс (он отличается в зависимости от того, какие файлы конфигурации загружены).

Чтобы установить oh-my-zsh, вам придется удалить часть кода из install.sh: а именно проверку, упомянутую в вопросе, и информацию о том, где он пытается автоматически запустить chsh . Или вы просто запускаете следующие две команды:

git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh
cp $HOME/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

Если вы не хотите устанавливать oh-my-zsh где-либо, кроме ~/.oh-my-zsh больше ничего не нужно. Все остальное в install.sh просто:

  • меры предосторожности против перезаписи уже существующей установки oh-my-zsh в том же месте, которую git clone может предотвратить в любом случае
  • резервное копирование ~/.zshrc , которого у вас, вероятно, нет при новой установке
  • настройка оболочки входа в систему, которая в любом случае не работает в вашем случае
  • и много красочных выходных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .