Не то, чтобы я советовал делать это.
(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2
Есть другие трюки, которые вы можете играть с экраном и с помощью $STY
переменной.
Если вы хотите, чтобы что-то запускалось из zsh на отдельных экранах, вы можете проверить переменную $ STY в вашем .zshrc или .zlogin. Это в формате <PID>.<TTY>.<HOSTNAME>
.
if [[ -n $STY ]] then
if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
. ~/.zsh-$STY[(ws:.:)2]
fi
fi
Если на экране есть, и если ~/.zsh-<TTY>
(из переменной $ STY) существует источник, то продолжайте свой веселый путь. Вы также можете установить переменную окружения перед вызовом интерактивной оболочки.
> FOO=bar zsh -i
> env | grep FOO
FOO=bar
> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
$RUNTHISCOMMAND
fi
Добавьте эти проверки в ваш .zshrc / .zlogin.
Я нашел решение, которое работает без дополнительной оболочки здесь . Добавлять:
в .zshrc, затем вызовите zsh с помощью
Действительно отлично подходит для запуска большого количества снарядов одновременно.
источник
Как насчет добавления
; exec zsh
в команду? Таким образом, в конце осталась только одна оболочка.источник
; zsh -i
, он уже делает это для вас.У меня есть
eval "$RUN"
в конце моего.zshrc
. Теперь я могу запускать команды без дополнительной оболочки:источник