Назад | Перейти на главную страницу

Сценарий оболочки предотвращает переключение на другую оболочку или выход из нее

Если в моем сценарии автоматизации мне нужно сделать что-то вроде install oh-my-zsh, у меня будет такой сценарий .sh:

#!/bin/sh

runuser -l user -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"'

Это работает и установит oh-my-zsh, как я ожидал, но затем он поместит сеанс в оболочку zsh. Если я добавлю команду exit до конца скрипта ничего не делает.

Как я могу либо запретить переключение на zsh (или любую другую оболочку), либо выйти из него в моем скрипте?

Если вы действительно посмотрите на этот скрипт, вы увидите, что в последнюю очередь он вызывает:

    exec zsh -l

Непосредственно перед этим вы увидите, что он проверяет, RUNZSH переменная установлена ​​в no. Если да, то он просто выйдет, не заходя в оболочку.

Итак, все, что вам нужно сделать, это передать переменную среды RUNZSH=no к команде.

Комментарии в верхней части скрипта содержат другие переменные, которые вы можете установить, и параметры командной строки, которые вы можете использовать.