zsh आह्वान, यह एक आदेश चलाने के लिए, और फिर बाहर निकलने के बजाय इंटरैक्टिव मोड में प्रवेश


32

मैं के समान zsh शुरू करना चाहते हैं

zsh -c 'my_prog option1 option2'

लेकिन उस आदेश को चलाने के बाद बाहर निकलने के बजाय, मुझे आह्वान किए गए चिड़ियाघर के स्थान पर छोड़ दिया (जहां से इसे बुलाया जा रहा है) नहीं। इसके लिए एक विशेष उपयोग स्क्रीनस्क्रीन फाइलों में है, आप कुछ ऐसा कर सकते हैं:

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

और उस कमांड को चलाने के बाद आप इसे बंद करने के बजाय एक शेल के साथ छोड़ देते हैं।

जवाबों:


24

ऐसा नहीं है कि मैं ऐसा करने की सलाह दूंगा।

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

अन्य चालें हैं जो आप स्क्रीन के साथ खेल सकते हैं और $STYचर का उपयोग कर सकते हैं ।

यदि आप व्यक्तिगत स्क्रीन के साथ zsh से कुछ चलाना चाहते हैं, तो आप अपने .zshrc .zlogin में $ STY चर की जांच कर सकते हैं। यह प्रारूप में है <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 में जोड़ें।



मैं नेस्टेड शेल से बचने की उम्मीद कर रहा था, लेकिन ओह अच्छी तरह से।
ऑटोप्लेक्टिक

14

मुझे एक समाधान मिला जो यहां एक अतिरिक्त शेल के बिना काम करता है । जोड़ें:

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

.zshrc, के साथ zsh को कॉल करें

zsh -is eval 'your shell command here'

एक ही बार में बहुत सारे गोले शुरू करने के लिए बहुत बढ़िया।


6

; exec zshकमांड में संलग्न करने के बारे में क्या ? इस तरह अंत में केवल एक खोल बचा है।


5
आपको वास्तव में निष्पादन की आवश्यकता नहीं है यदि आप ; zsh -i, यह आपके लिए पहले से ही है।
डैरेन हॉल

4

मेरे पास eval "$RUN"मेरे अंत में है .zshrc। मैं अब अतिरिक्त शेल के बिना कमांड चला सकता हूं:

RUN='my_prog opt1 opt2' zsh

यह एक अजीब कीचड़ लगता है - लेकिन यह इतनी अच्छी तरह से काम करता है!
zaTricky
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.