Shell скрипт не позволяет переключиться на другую оболочку или выйти из нее

Если в моем сценарии автоматизации мне нужно сделать что-то вроде 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 (или любой другой shell) или выход из него в моем скрипте?

1
задан 9 August 2019 в 07:24
1 ответ

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

    exec zsh -l

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

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

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

2
ответ дан 3 December 2019 в 20:06

Теги

Похожие вопросы