কমান্ড চালিয়ে zsh ডেকে আনুন এবং তারপরে বাইরে বের হওয়ার পরিবর্তে ইন্টারেক্টিভ মোড প্রবেশ করুন


32

আমি অনুরূপ zsh শুরু করতে চাই

zsh -c 'my_prog option1 option2'

তবে এই আদেশটি চালিয়ে যাওয়ার পরে আপনি প্রস্থান করার পরিবর্তে আমাকে আমন্ত্রিত zsh এর প্রপটে রেখে যান (যেখানেই এটি ডাকা হচ্ছে না)। এর জন্য একটি বিশেষ ব্যবহারের ক্ষেত্রে স্ক্রিনসিআর ফাইলগুলি রয়েছে, আপনি যেমন কিছু করতে পারেন:

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.