invoca zsh, fazendo com que ele execute um comando e, em seguida, insira o modo interativo em vez de sair

25

eu gostaria de começar o zsh similar a

zsh -c 'my_prog option1 option2'

mas em vez de sair depois de executar esse comando, deixando-me no propt do zsh invocado (não onde quer que esteja sendo chamado). um caso de uso específico para isso é em arquivos screenrc, você poderia fazer algo como:

screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'

e depois de executar esse comando você fica com um shell lá em vez de fechar.

    
por Autoplectic 05.01.2010 / 23:48

4 respostas

20

Não que eu recomende fazer isso.

(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2

Existem outros truques que você pode jogar com a tela e usar a variável $STY .

Se você deseja que algo seja executado a partir de zsh com telas individuais, é possível verificar a variável $ STY em seu .zshrc ou .zlogin. Está no formato <PID>.<TTY>.<HOSTNAME> .

if [[ -n $STY ]] then
  if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
    . ~/.zsh-$STY[(ws:.:)2]
  fi
fi

Se estiver na tela, e se ~/.zsh-<TTY> (da variável $ STY) existir, forneça isso e continue em seu caminho alegre. Você também pode definir uma variável de ambiente antes de chamar o shell interativo.

> FOO=bar zsh -i
> env | grep FOO
FOO=bar

> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
   $RUNTHISCOMMAND
fi

Adicione essas verificações ao seu .zshrc / .zlogin.

    
por 06.01.2010 / 00:40
9

Eu encontrei uma solução que funciona sem um shell extra aqui . Adicione:

if [[ $1 == eval ]]
then
    "$@"
set --
fi

para .zshrc, então chame zsh com

zsh -is eval 'your shell command here'

Realmente ótimo para iniciar muitos shells de uma só vez.

    
por 07.01.2011 / 02:32
5

Que tal acrescentar ; exec zsh ao comando? Dessa forma, resta apenas uma concha no final.

    
por 06.01.2010 / 03:44
4

Eu tenho eval "$RUN" no final do meu .zshrc . Agora posso executar comandos sem o shell extra, com:

RUN='my_prog opt1 opt2' zsh
    
por 31.07.2014 / 14:24

Tags