Как запустить интерактивную оболочку со специальной настройкой
Я хочу начать интерактивную Zsh (на Cygwin) с конкретной настройки проекта:
- источник
/etc/profile
- источник
~/.profile
- источник
$PROJECT_HOME/Setup.zsh
- стать интерактивным
Я добрался до шага 3, но затем оболочка просто завершается.
Я делал такие вещи раньше, но я забыл, как я это сделал. Я пытался за это погуглить но ничего не смог найти. Вероятно, случай неправильных условий поиска.
Добавление $PROJECT_HOME/Setup.zsh
в ~/.profile
Конечно, это не решение, так как идея состоит в том, чтобы на рабочем столе Windows было несколько значков запуска для запуска оболочек одного из многих проектов.
3 ответа
Сделайте ваши ярлыки похожими на:
env PROJECT_HOME=~/projects/this zsh
env PROJECT_HOME=~/projects/that zsh
Sourcing $PROJECT_HOME/Setup.zsh
теперь будет работать нормально.
Вы не сказали, как вы определяете то, что вы называете несколькими значками запуска , и как именно вы запускаете свой терминал с оболочкой. Например, на моей платформе я использую
C:\cygwin64\bin\mintty.exe -s 101,26 -e /usr/bin/dash -c "PROJECT=25 /usr/bin/zsh -i -l"
и внутри вашего .zshrc вы определяете значение
В этом подходе я использую временную оболочку (в моем случае: Dash, потому что она загружается быстро) для настройки переменной среды и, наконец, вызываю zsh в качестве оболочки интерактивного входа.
Тот же подход должен работать и с другими эмуляторами терминала, такими как ConEmu.
zsh не очень хорошо это поддерживает. Единственный известный мне способ сделать это — временно переопределить$ZDOTDIR
в какой-нибудь временный каталог и вставьте.zshrc
там, который может загружать нужные вам функции. Вот полный пример:
#!/usr/bin/zsh
dir=`mktemp -d /tmp/adevXXX`
# Preload the shell with all of the shell functions defined in
# build/envsetup.sh.
cat >$dir/.zshrc <<EOF
source $HOME/.zshrc
source build/envsetup.sh
EOF
ZDOTDIR=$dir zsh
rm -r $dir