Nie to, że radziłbym to zrobić.
(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2
Istnieją inne sztuczki, w które można grać przy użyciu ekranu i $STY
zmiennej.
Jeśli chcesz, aby coś uruchamiało się z zsh na poszczególnych ekranach, możesz sprawdzić zmienną $ STY w .zshrc lub .zlogin. Jest w formacie <PID>.<TTY>.<HOSTNAME>
.
if [[ -n $STY ]] then
if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
. ~/.zsh-$STY[(ws:.:)2]
fi
fi
Jeśli znajduje się na ekranie, a jeśli istnieje ~/.zsh-<TTY>
(ze zmiennej $ STY), znajdź to, a następnie kontynuuj na swój wesoły sposób. Możesz także ustawić zmienną środowiskową przed wywołaniem powłoki interaktywnej.
> FOO=bar zsh -i
> env | grep FOO
FOO=bar
> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
$RUNTHISCOMMAND
fi
Dodaj te czeki do swojego .zshrc / .zlogin.
Znalazłem rozwiązanie, które działa bez dodatkowej powłoce tutaj . Dodaj:
do .zshrc, a następnie wywołaj zsh za pomocą
Naprawdę świetne do uruchamiania wielu pocisków jednocześnie.
źródło
A co z dołączeniem
; exec zsh
do polecenia? W ten sposób na końcu pozostała tylko jedna skorupa.źródło
; zsh -i
to robi.Mam
eval "$RUN"
na końcu moje.zshrc
. Teraz mogę uruchamiać polecenia bez dodatkowej powłoki:źródło