я хотел бы запуститься zsh подобный
zsh -c 'my_prog option1 option2'
но вместо того, чтобы выйти после выполнения той команды, оставляя меня в propt вызванного zsh (не везде, откуда это называют). один конкретный пример использования для этого находится в screenrc файлах, Вы могли сделать что-то как:
screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'
и после выполнения той команды Вас оставляют с оболочкой там вместо него закрытие.
Не то, чтобы я советовал бы делать это.
(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.
Я нашел решение, которое работает без дополнительной оболочки здесь. Добавьте:
if [[ $1 == eval ]]
then
"$@"
set --
fi
к .zshrc затем назовите zsh с
zsh -is eval 'your shell command here'
Действительно большой для запуска большого количества оболочек сразу.